diff options
author | Robert Collins <robertc@robertcollins.net> | 2009-03-08 13:16:13 +1100 |
---|---|---|
committer | Robert Collins <robertc@robertcollins.net> | 2009-03-08 13:16:13 +1100 |
commit | b3d45b91f898653843a4444567733c5bdb71a3f7 (patch) | |
tree | 32ab3688017c0892432da53bca0212785aacb2f3 | |
parent | d6697aacf35a5fa0841319d94b405cf026b4d6e0 (diff) | |
download | testscenarios-b3d45b91f898653843a4444567733c5bdb71a3f7.tar.gz |
TestWithScenarios now honours the scenarios list as far as cloning and renaming tests goes.
-rw-r--r-- | lib/testscenarios/testcase.py | 14 | ||||
-rw-r--r-- | lib/testscenarios/tests/test_testcase.py | 32 |
2 files changed, 46 insertions, 0 deletions
diff --git a/lib/testscenarios/testcase.py b/lib/testscenarios/testcase.py index f8c0e8e..0b8898c 100644 --- a/lib/testscenarios/testcase.py +++ b/lib/testscenarios/testcase.py @@ -23,5 +23,19 @@ __all__ = [ import unittest +from testtools.testcase import clone_test_with_new_id + class TestWithScenarios(unittest.TestCase): """A TestCase with support for scenarios via a scenarios attribute.""" + + def run(self, result=None): + scenarios = getattr(self, 'scenarios', None) + if scenarios: + for name, parameters in scenarios: + newtest = clone_test_with_new_id(self, + self.id() + '(' + name + ')') + newtest.scenarios = None + newtest.run(result) + return + else: + return super(TestWithScenarios, self).run(result) diff --git a/lib/testscenarios/tests/test_testcase.py b/lib/testscenarios/tests/test_testcase.py index c5e85b9..9cfd724 100644 --- a/lib/testscenarios/tests/test_testcase.py +++ b/lib/testscenarios/tests/test_testcase.py @@ -20,6 +20,7 @@ import unittest import testscenarios +from testtools.tests.helpers import LoggingResult class TestTestWithScenarios(unittest.TestCase): @@ -34,4 +35,35 @@ class TestTestWithScenarios(unittest.TestCase): self.assertTrue(result.wasSuccessful()) self.assertEqual(1, result.testsRun) + def test_with_one_scenario_one_run(self): + class ReferenceTest(testscenarios.TestWithScenarios): + scenarios = [('demo', {})] + def test_pass(self): + pass + test = ReferenceTest("test_pass") + log = [] + result = LoggingResult(log) + test.run(result) + self.assertTrue(result.wasSuccessful()) + self.assertEqual(1, result.testsRun) + self.assertEqual( + 'testscenarios.tests.test_testcase.ReferenceTest.test_pass(demo)', + log[0][1].id()) + def test_with_two_scenarios_two_run(self): + class ReferenceTest(testscenarios.TestWithScenarios): + scenarios = [('1', {}), ('2', {})] + def test_pass(self): + pass + test = ReferenceTest("test_pass") + log = [] + result = LoggingResult(log) + test.run(result) + self.assertTrue(result.wasSuccessful()) + self.assertEqual(2, result.testsRun) + self.assertEqual( + 'testscenarios.tests.test_testcase.ReferenceTest.test_pass(1)', + log[0][1].id()) + self.assertEqual( + 'testscenarios.tests.test_testcase.ReferenceTest.test_pass(2)', + log[4][1].id()) |