@@ -51,6 +51,9 @@ def test_init__tests_optional(self):
5151 suite = unittest .TestSuite ()
5252
5353 self .assertEqual (suite .countTestCases (), 0 )
54+ # countTestCases() still works after tests are run
55+ suite .run (unittest .TestResult ())
56+ self .assertEqual (suite .countTestCases (), 0 )
5457
5558 # "class TestSuite([tests])"
5659 # ...
@@ -63,6 +66,9 @@ def test_init__empty_tests(self):
6366 suite = unittest .TestSuite ([])
6467
6568 self .assertEqual (suite .countTestCases (), 0 )
69+ # countTestCases() still works after tests are run
70+ suite .run (unittest .TestResult ())
71+ self .assertEqual (suite .countTestCases (), 0 )
6672
6773 # "class TestSuite([tests])"
6874 # ...
@@ -84,6 +90,14 @@ def tests():
8490 suite_3 = unittest .TestSuite (set (suite_1 ))
8591 self .assertEqual (suite_3 .countTestCases (), 2 )
8692
93+ # countTestCases() still works after tests are run
94+ suite_1 .run (unittest .TestResult ())
95+ self .assertEqual (suite_1 .countTestCases (), 2 )
96+ suite_2 .run (unittest .TestResult ())
97+ self .assertEqual (suite_2 .countTestCases (), 2 )
98+ suite_3 .run (unittest .TestResult ())
99+ self .assertEqual (suite_3 .countTestCases (), 2 )
100+
87101 # "class TestSuite([tests])"
88102 # ...
89103 # "If tests is given, it must be an iterable of individual test cases
@@ -99,6 +113,9 @@ def tests():
99113
100114 suite = unittest .TestSuite (tests ())
101115 self .assertEqual (suite .countTestCases (), 2 )
116+ # countTestCases() still works after tests are run
117+ suite .run (unittest .TestResult ())
118+ self .assertEqual (suite .countTestCases (), 2 )
102119
103120 ################################################################
104121 ### /Tests for TestSuite.__init__
@@ -145,6 +162,9 @@ def test_countTestCases_simple(self):
145162 suite = unittest .TestSuite ((test1 , test2 ))
146163
147164 self .assertEqual (suite .countTestCases (), 2 )
165+ # countTestCases() still works after tests are run
166+ suite .run (unittest .TestResult ())
167+ self .assertEqual (suite .countTestCases (), 2 )
148168
149169 # "Return the number of tests represented by the this test object.
150170 # ...this method is also implemented by the TestSuite class, which can
@@ -162,6 +182,10 @@ def test2(self): pass
162182 parent = unittest .TestSuite ((test3 , child , Test1 ('test1' )))
163183
164184 self .assertEqual (parent .countTestCases (), 4 )
185+ # countTestCases() still works after tests are run
186+ parent .run (unittest .TestResult ())
187+ self .assertEqual (parent .countTestCases (), 4 )
188+ self .assertEqual (child .countTestCases (), 2 )
165189
166190 # "Run the tests associated with this suite, collecting the result into
167191 # the test result object passed as result."
@@ -220,6 +244,9 @@ def test(self): pass
220244
221245 self .assertEqual (suite .countTestCases (), 1 )
222246 self .assertEqual (list (suite ), [test ])
247+ # countTestCases() still works after tests are run
248+ suite .run (unittest .TestResult ())
249+ self .assertEqual (suite .countTestCases (), 1 )
223250
224251 # "Add a ... TestSuite to the suite"
225252 def test_addTest__TestSuite (self ):
@@ -233,6 +260,9 @@ def test(self): pass
233260
234261 self .assertEqual (suite .countTestCases (), 1 )
235262 self .assertEqual (list (suite ), [suite_2 ])
263+ # countTestCases() still works after tests are run
264+ suite .run (unittest .TestResult ())
265+ self .assertEqual (suite .countTestCases (), 1 )
236266
237267 # "Add all the tests from an iterable of TestCase and TestSuite
238268 # instances to this test suite."
@@ -392,6 +422,7 @@ def tearDownModule():
392422 self .assertEqual (len (result .errors ), 1 )
393423 self .assertEqual (len (result .failures ), 0 )
394424 self .assertEqual (result .testsRun , 2 )
425+ self .assertEqual (suite .countTestCases (), 2 )
395426
396427
397428 def test_overriding_call (self ):
0 commit comments