def make_test(id, should_pass): """Make a test.""" if should_pass: case = Case("passing") else: case = FailingCase() return clone_test_with_new_id(case, id)
def make_integration_tests(): from unittest import TestSuite from testtools import clone_test_with_new_id runners = [ ("RunTest", RunTest), ("SynchronousDeferredRunTest", SynchronousDeferredRunTest), ("AsynchronousDeferredRunTest", AsynchronousDeferredRunTest), ] tests = [ X.BaseExceptionRaised, X.ErrorInSetup, X.ErrorInTest, X.ErrorInTearDown, X.FailureInTest, X.ErrorInCleanup, X.ExpectThatFailure, ] base_test = X.TestIntegration("test_runner") integration_tests = [] for runner_name, runner in runners: for test in tests: new_test = clone_test_with_new_id(base_test, "%s(%s, %s)" % (base_test.id(), runner_name, test.__name__)) new_test.test_factory = test new_test.runner = runner integration_tests.append(new_test) return TestSuite(integration_tests)
def make_integration_tests(): from unittest import TestSuite from testtools import clone_test_with_new_id runners = [ ('RunTest', RunTest), ('SynchronousDeferredRunTest', SynchronousDeferredRunTest), ('AsynchronousDeferredRunTest', AsynchronousDeferredRunTest), ] tests = [ X.ErrorInSetup, X.ErrorInTest, X.ErrorInTearDown, X.FailureInTest, X.ErrorInCleanup, ] base_test = X.TestIntegration('test_runner') integration_tests = [] for runner_name, runner in runners: for test in tests: new_test = clone_test_with_new_id( base_test, '%s(%s, %s)' % ( base_test.id(), runner_name, test.__name__)) new_test.test_factory = test new_test.runner = runner integration_tests.append(new_test) return TestSuite(integration_tests)
def make_integration_tests(): from unittest import TestSuite from testtools import clone_test_with_new_id runners = [ ('RunTest', RunTest), ('SynchronousDeferredRunTest', SynchronousDeferredRunTest), ('AsynchronousDeferredRunTest', AsynchronousDeferredRunTest), ] tests = [ X.BaseExceptionRaised, X.ErrorInSetup, X.ErrorInTest, X.ErrorInTearDown, X.FailureInTest, X.ErrorInCleanup, ] base_test = X.TestIntegration('test_runner') integration_tests = [] for runner_name, runner in runners: for test in tests: new_test = clone_test_with_new_id( base_test, '%s(%s, %s)' % (base_test.id(), runner_name, test.__name__)) new_test.test_factory = test new_test.runner = runner integration_tests.append(new_test) return TestSuite(integration_tests)
def test_suite(): test = ScriptsTestCase('test_script') test_id = test.id() suite = unittest.TestSuite() for script_path in find_lp_scripts(): new_test = clone_test_with_new_id( test, make_new_id(test_id, script_path)) new_test.script_path = script_path suite.addTest(new_test) return suite
def report_test_tree(output, flaky_tests): """ Print all flaky tests as a tree. """ reporter = TreeReporter(output) for (test, flaky) in flaky_tests: new_test = clone_test_with_new_id(test, '{}({})'.format(test.id(), ', '.join(flaky.jira_keys))) reporter.startTest(new_test) reporter.addSuccess(new_test) reporter.stopTest(new_test) reporter.done()
def test_clone_test_with_new_id(self): class FooTestCase(TestCase): def test_foo(self): pass test = FooTestCase('test_foo') oldName = test.id() newName = self.getUniqueString() newTest = clone_test_with_new_id(test, newName) self.assertEqual(newName, newTest.id()) self.assertEqual(oldName, test.id(), "the original test instance should be unchanged.")
def test_cloned_testcase_does_not_share_details(self): """A cloned TestCase does not share the details dict.""" class Test(TestCase): def test_foo(self): self.addDetail( 'foo', content.Content('text/plain', lambda: 'foo')) orig_test = Test('test_foo') cloned_test = clone_test_with_new_id(orig_test, self.getUniqueString()) orig_test.run(unittest.TestResult()) self.assertEqual('foo', orig_test.getDetails()['foo'].iter_bytes()) self.assertEqual(None, cloned_test.getDetails().get('foo'))
def report_test_tree(output, flaky_tests): """ Print all flaky tests as a tree. """ reporter = TreeReporter(output) for (test, flaky) in flaky_tests: new_test = clone_test_with_new_id( test, '{}({})'.format(test.id(), ', '.join(flaky.jira_keys))) reporter.startTest(new_test) reporter.addSuccess(new_test) reporter.stopTest(new_test) reporter.done()
def test_unexpected_success(self): # Unexpected successes get forwarded too. (Test added because of a # NameError in memory repo). repo = self.repo_impl.initialise(self.sample_url) result = repo.get_inserter() legacy_result = testtools.ExtendedToStreamDecorator(result) legacy_result.startTestRun() test = clone_test_with_new_id(Case('unexpected_success'), 'unexpected_success') test.run(legacy_result) legacy_result.stopTestRun() analyzed = self.get_last_run(repo) self.assertEqual(1, analyzed.testsRun) self.assertEqual(1, len(analyzed.unexpectedSuccesses)) self.assertEqual('unexpected_success', analyzed.unexpectedSuccesses[0].id())
def testSortingTwelveIndependentIsFast(self): # Given twelve independent resource sets, my patience is not exhausted. managers = [] for pos in range(12): managers.append(testresources.TestResourceManager()) # Add more sample tests cases = [self.case1, self.case2, self.case3, self.case4] for pos in range(5, 13): cases.append( testtools.clone_test_with_new_id(cases[0], 'case%d' % pos)) # We care that this is fast in this test, so we don't need to have # overlapping resource usage for case, manager in zip(cases, managers): case.resources = [('_resource', manager)]
def testSortingTwelveOverlappingIsFast(self): # Given twelve connected resource sets, my patience is not exhausted. managers = [] for pos in range(12): managers.append(testresources.TestResourceManager()) # Add more sample tests cases = [self.case1, self.case2, self.case3, self.case4] for pos in range(5, 13): cases.append( testtools.clone_test_with_new_id(cases[0], 'case%d' % pos)) tempdir = testresources.TestResourceManager() # give all tests a tempdir, enough to provoke a single partition in # the current code. for case, manager in zip(cases, managers): case.resources = [('_resource', manager), ('tempdir', tempdir)]
def testSortingTwelveIndependentIsFast(self): # Given twelve independent resource sets, my patience is not exhausted. managers = [] for pos in range(12): managers.append(testresources.TestResourceManager()) # Add more sample tests cases = [self.case1, self.case2, self.case3, self.case4] for pos in range(5,13): cases.append( testtools.clone_test_with_new_id(cases[0], 'case%d' % pos)) # We care that this is fast in this test, so we don't need to have # overlapping resource usage for case, manager in zip(cases, managers): case.resources = [('_resource', manager)] # Any sort is ok, as long as its the right length :) result = self.sortTests(cases) self.assertEqual(12, len(result))
def testSortingTwelveOverlappingIsFast(self): # Given twelve connected resource sets, my patience is not exhausted. managers = [] for pos in range(12): managers.append(testresources.TestResourceManager()) # Add more sample tests cases = [self.case1, self.case2, self.case3, self.case4] for pos in range(5,13): cases.append( testtools.clone_test_with_new_id(cases[0], 'case%d' % pos)) tempdir = testresources.TestResourceManager() # give all tests a tempdir, enough to provoke a single partition in # the current code. for case, manager in zip(cases, managers): case.resources = [('_resource', manager), ('tempdir', tempdir)] # Any sort is ok, as long as its the right length :) result = self.sortTests(cases) self.assertEqual(12, len(result))
def clone(self, suffix): # Clone this test with a new suffix. test = clone_test_with_new_id( self, "%s#%s" % (self.id(), suffix)) test.cloned = True return test
def clone(self, suffix): # Clone this test with a new suffix. test = clone_test_with_new_id(self, "%s#%s" % (self.id(), suffix)) test.cloned = True return test