def test_run_all_tagged_tests(tags, num_of_suite_entries): """Test running all tests whose testcases are selected by tags.""" target = runnable.TestRunner(name="TestRunner") local_runner = LocalRunner() test_uids = ["test_1", "test_2", "test_3"] test_objs = [ multitest.MultiTest( name=uid, suites=[TaggedSuite()], test_filter=filtering.Tags({"simple": set(tags)}), test_sorter=ordering.NoopSorter(), stdout_style=defaults.STDOUT_STYLE, environment=[driver.Driver(name="mock_driver")], ) for uid in test_uids ] for test in test_objs: local_runner.add(test, test.uid()) target.resources.add(local_runner) with mock.patch("cheroot.wsgi.Server"), mock.patch( "testplan.runnable.interactive.reloader.ModuleReloader" ) as MockReloader: MockReloader.return_value = None irunner = base.TestRunnerIHandler(target) irunner.setup() irunner.run_all_tests(await_results=True) assert irunner.report.passed assert len(irunner.report.entries) == 3 for test_report in irunner.report: assert test_report.passed assert len(test_report.entries) == 1 assert len(test_report.entries[0].entries) == num_of_suite_entries assert len(test_report.entries[0].entries[-1].entries) == 3 irunner.teardown()
def test_filter_case(self, tags, testcase_obj, expected): filter_obj = filtering.Tags(tags=tags) assert bool(filter_obj.filter_case(testcase_obj)) == expected
def test_filter_test(self, tags, multitest, expected): filter_obj = filtering.Tags(tags=tags) assert bool(filter_obj.filter_test(multitest)) == expected
('Beta', ['test_one', 'test_two', 'test_three']), ]), ('YYY', (('Gamma', ['test_one', 'test_two', 'test_three']), ))]), # Case 2 (filtering.Pattern('*:*:test_two'), [('XXX', [ ('Alpha', ['test_two']), ('Beta', ['test_two']), ]), ('YYY', [ ('Gamma', ['test_two']), ])]), # Case 3 (filtering.Pattern('XXX:Beta:test_two'), [ ('XXX', [('Beta', ['test_two'])]), ]), # Case 4 - testcase name match AND tag match (filtering.And(filtering.Pattern('*:*:test_two'), filtering.Tags({'color': 'blue'})), [('XXX', [ ('Alpha', ['test_two']), ]), ('YYY', [ ('Gamma', ['test_two']), ])]), # Case 5 - testcase name match AND tag match, different syntax ((filtering.Pattern('*:*:test_two') and filtering.Tags({'color': 'blue'})), [('XXX', [ ('Alpha', ['test_two']), ]), ('YYY', [ ('Gamma', ['test_two']), ])]), # Case 6 - Run tests that are: # named `test_one` AND tagged with `baz` # OR # belong to a suite named Alpha OR Beta AND tagged with `color`: `red`
count_lister = listing.CountLister() # Sample output: # Primary: (2 suites, 6 testcases) # Secondary: (1 suite, 102 testcases) # Here is a list of filters, you can pass them to # the test plan declaration below and see how they change the # test listing output. pattern_filter_1 = filtering.Pattern('Primary') pattern_filter_2 = filtering.Pattern('*:*:test_c') tag_filter_1 = filtering.Tags('client') tag_filter_2 = filtering.Tags({'color': 'blue'}) composite_filter_1 = pattern_filter_1 | pattern_filter_2 composite_filter_2 = (pattern_filter_1 & tag_filter_1) | tag_filter_2 @test_plan( name='Programmatic Listing Example', # You can replace this argument with the other listers defined above # to see different output formats. # test_lister=test_lister, test_lister=name_lister, # Comment out the arguments below to see how they affect the listing output. # test_filter=pattern_filter_1,
filtering.Pattern("*:*:test_two"), [ ("XXX", [("Alpha", ["test_two"]), ("Beta", ["test_two"])]), ("YYY", [("Gamma", ["test_two"])]), ], ), # Case 3 ( filtering.Pattern("XXX:Beta:test_two"), [("XXX", [("Beta", ["test_two"])])], ), # Case 4 - testcase name match AND tag match ( filtering.And( filtering.Pattern("*:*:test_two"), filtering.Tags({"color": "blue"}), ), [ ("XXX", [("Alpha", ["test_two"])]), ("YYY", [("Gamma", ["test_two"])]), ], ), # Case 5 - testcase name match AND tag match, different syntax ( ( filtering.Pattern("*:*:test_two") and filtering.Tags({"color": "blue"}) ), [ ("XXX", [("Alpha", ["test_two"])]), ("YYY", [("Gamma", ["test_two"])]),
count_lister = listing.CountLister() # Sample output: # Primary: (2 suites, 6 testcases) # Secondary: (1 suite, 102 testcases) # Here is a list of filters, you can pass them to # the test plan declaration below and see how they change the # test listing output. pattern_filter_1 = filtering.Pattern("Primary") pattern_filter_2 = filtering.Pattern("*:*:test_c") tag_filter_1 = filtering.Tags("client") tag_filter_2 = filtering.Tags({"color": "blue"}) composite_filter_1 = pattern_filter_1 | pattern_filter_2 composite_filter_2 = (pattern_filter_1 & tag_filter_1) | tag_filter_2 @test_plan( name="Programmatic Listing Example", # You can replace this argument with the other listers defined above # to see different output formats. # test_lister=test_lister, test_lister=name_lister, # Comment out the arguments below to see how they affect the listing output. # test_filter=pattern_filter_1, # test_sorter=ordering.ShuffleSorter()