unittest: Add setUpClass and tearDownClass handling.

Supports setUp and tearDown functionality at Class level.
pull/488/head
Steve Li 2022-04-05 10:05:30 +10:00 zatwierdzone przez Andrew Leech
rodzic ddeb9a7da2
commit 2d61dbdb93
2 zmienionych plików z 25 dodań i 0 usunięć

Wyświetl plik

@ -157,5 +157,24 @@ class TestUnittestAssertions(unittest.TestCase):
self.assertEqual(i % 2, 0)
class TestUnittestSetup(unittest.TestCase):
class_setup_var = 0
def setUpClass(self):
TestUnittestSetup.class_setup_var += 1
def tearDownClass(self):
# Not sure how to actually test this, but we can check (in the test case below)
# that it hasn't been run already at least.
TestUnittestSetup.class_setup_var = -1
def testSetUpTearDownClass_1(self):
assert TestUnittestSetup.class_setup_var == 1, TestUnittestSetup.class_setup_var
def testSetUpTearDownClass_2(self):
# Test this twice, as if setUpClass() gets run like setUp() it would be run twice
assert TestUnittestSetup.class_setup_var == 1, TestUnittestSetup.class_setup_var
if __name__ == "__main__":
unittest.main()

Wyświetl plik

@ -366,6 +366,8 @@ def run_suite(c, test_result, suite_name=""):
o = c()
else:
o = c
set_up_class = getattr(o, "setUpClass", lambda: None)
tear_down_class = getattr(o, "tearDownClass", lambda: None)
set_up = getattr(o, "setUp", lambda: None)
tear_down = getattr(o, "tearDown", lambda: None)
exceptions = []
@ -410,6 +412,8 @@ def run_suite(c, test_result, suite_name=""):
except AttributeError:
pass
set_up_class()
if hasattr(o, "runTest"):
name = str(o)
run_one(o.runTest)
@ -426,6 +430,8 @@ def run_suite(c, test_result, suite_name=""):
name = o.__name__
run_one(o)
tear_down_class()
return exceptions