I just added https://github.com/apache/beam/pull/25425 to do this
On Fri, Feb 10, 2023 at 11:42 AM Julian Ogando via dev <dev@beam.apache.org> wrote: > Hi Bruno, > Thanks for the quick response! > Yes, I already have the code running by reading the "unittest" > documentation, but it would be good to include those changes in the Beam > documentation :) > > Thanks! > Julian > > On Fri, Feb 10, 2023 at 12:28 PM Bruno Volpato <bvolp...@google.com> > wrote: > >> >> 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 >>> >>> > > -- > > Julian Ogando > > Cloud Data Engineer > > Latam Eng Delivery Center > > +54 911 65715933 > > julianoga...@google.com > >