Skip to content

Commit 3510abb

Browse files
authored
#22 Create TestSuite from TestCase
2 parents 6cbb911 + dd548a9 commit 3510abb

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

src/no_op_test_case.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from test_case import TestCase
2+
3+
4+
class NoOpTestCase(TestCase):
5+
def testMethod(self) -> None:
6+
pass
7+
8+
def testMethod2(self) -> None:
9+
pass

src/test_case.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from test_suite import TestSuite
2+
3+
14
class TestCase:
25

36
def __init__(self, name) -> None:
@@ -28,3 +31,15 @@ def run(self, result) -> None:
2831

2932
def tearDown(self) -> None:
3033
pass
34+
35+
def getTestNames(self):
36+
testNames = [testName for testName in dir(
37+
self) if testName.startswith("test")]
38+
return testNames
39+
40+
def asSuite(self):
41+
suite = TestSuite()
42+
testNames = self.getTestNames()
43+
for testName in testNames:
44+
suite.add(self.__class__(testName))
45+
return suite

src/test_case_test.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from broken_setup import TestCaseWithBrokenSetup
55
from test_suite import TestSuite
66
from broken_teardown import TestCaseWithBrokenTearDown
7+
from no_op_test_case import NoOpTestCase
78

89

910
class TestCaseTest(TestCase):
@@ -48,16 +49,20 @@ def testTearDownCalledEvenIfTestFails(self) -> None:
4849
test.run(self.result)
4950
assert ("setUp testBrokenMethod tearDown " == test.log)
5051

52+
def testCollectAllTestNames(self) -> None:
53+
test = NoOpTestCase('testMethod')
54+
assert (test.getTestNames() == ["testMethod", "testMethod2"])
5155

52-
suite = TestSuite()
53-
suite.add(TestCaseTest("testTemplateMethod"))
54-
suite.add(TestCaseTest("testFailedResultFormatting"))
55-
suite.add(TestCaseTest("testFailedResult"))
56-
suite.add(TestCaseTest("testFailedSetUp"))
57-
suite.add(TestCaseTest("testSuite"))
58-
suite.add(TestCaseTest("testFailedTearDown"))
59-
suite.add(TestCaseTest("testTearDownCalledEvenIfTestFails"))
56+
def testReturnsTestSuite(self) -> None:
57+
suite = NoOpTestCase('testMethod').asSuite()
58+
assert (len(suite.tests) == 2)
6059

60+
result = TestResult()
61+
suite.run(result)
62+
assert (result.summary() == "2 run, 0 failed")
63+
64+
65+
suite = TestCaseTest('anything').asSuite()
6166
result = TestResult()
6267
suite.run(result)
6368
print(result.summary())

0 commit comments

Comments
 (0)