summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-03-08 13:16:13 +1100
committerRobert Collins <robertc@robertcollins.net>2009-03-08 13:16:13 +1100
commitb3d45b91f898653843a4444567733c5bdb71a3f7 (patch)
tree32ab3688017c0892432da53bca0212785aacb2f3
parentd6697aacf35a5fa0841319d94b405cf026b4d6e0 (diff)
downloadtestscenarios-git-b3d45b91f898653843a4444567733c5bdb71a3f7.tar.gz
TestWithScenarios now honours the scenarios list as far as cloning and renaming tests goes.
-rw-r--r--lib/testscenarios/testcase.py14
-rw-r--r--lib/testscenarios/tests/test_testcase.py32
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())