Hi Julian,

That's a good point. I think the focus of
https://beam.apache.org/documentation/pipelines/test-your-pipeline/ is
showing how to test Beam, but probably linking to working examples would be
helpful to reduce friction.

Related to your code, I believe you are missing 2 imports:

import unittest

import apache_beam as beam


And you should invoke the test either through:

python3 -m unittest test.py


It is possible to start tests using the given command "python3 test.py
--runner DirectRunner", but you'll need to add the following lines to your
code:

if __name__ == '__main__':

  unittest.main()



Best,
Bruno

On Fri, Feb 10, 2023 at 10:09 AM Julian Ogando via dev <dev@beam.apache.org>
wrote:

> Hi,
> I'm reading the documentation found in
> https://beam.apache.org/documentation/pipelines/test-your-pipeline/
>
> from apache_beam.testing.test_pipeline import TestPipelinefrom 
> apache_beam.testing.util import assert_thatfrom apache_beam.testing.util 
> import equal_to
> class CountTest(unittest.TestCase):
>
>   def test_count(self):
>     # Our static input data, which will make up the initial PCollection.
>     WORDS = [
>       "hi", "there", "hi", "hi", "sue", "bob",
>       "hi", "sue", "", "", "ZOW", "bob", ""
>     ]
>     # Create a test pipeline.
>     with TestPipeline() as p:
>
>       # Create an input PCollection.
>       input = p | beam.Create(WORDS)
>
>       # Apply the Count transform under test.
>       output = input | beam.combiners.Count.PerElement()
>
>       # Assert on the results.
>       assert_that(
>         output,
>         equal_to([
>             ("hi", 4),
>             ("there", 1),
>             ("sue", 2),
>             ("bob", 2),
>             ("", 3),
>             ("ZOW", 1)]))
>
>
> It's a little bit unclear how to run the unit test. If execute it with
> "python3 test.py --runner DirectRunner" I get an error message:
> class CountTest(unittest.TestCase):
> NameError: name 'unittest' is not defined
>
> Thanks!
> --
>
> Julian Ogando
>
> Cloud Data Engineer
>
> Latam Eng Delivery Center
>
> +54 911 65715933
>
> julianoga...@google.com
>
>

Reply via email to