记录pytest 与 unittest内的前后置函数操作区别
setup_class:单个测试类开始前执行1次
setup:每个测试函数执行前执行1次
teardown:每个测试函数执行结束后执行1次
teardown_class:单个测试类结束前执行1次
可拆开任意组合使用,若都同时使用, 则执行顺序如下
执行顺序:setup_class ==> (setup ==> teardown) * n ==>teardown_class
import pytestclass TestCase:# 每个测试函数执行前执行1次def setup(self):print("__setup__")# 每个测试函数执行结束后执行1次def teardown(self):print("__teardown__")# 单个测试类开始前执行1次def setup_class(self):print("__setup_class__")# 单个测试类结束前执行1次def teardown_class(self):print("__teardown_class__")def test_1(self):print('a')def test_2(self):print('b')if __name__ == '__main__':pytest.main()
__setup_class____setup__
PASSED [ 50%]a
__teardown____setup__
PASSED [100%]b
__teardown____teardown_class__
setUp:每个测试函数执行前执行1次
tearDown:每个测试函数执行结束后执行1次
setUpClass:单个测试类开始前执行1次
tearDownClass:单个测试类结束前执行1次
import unittestclass TestDemo(unittest.TestCase):def setUp(self):print("__setUp__")def tearDown(self):print("__tearDown__")@classmethoddef setUpClass(cls):print("__setUpClass__")@classmethoddef tearDownClass(cls):print("__tearDownClass__")def test_1(self):print("a")def test_2(self):print("b")if __name__ == '__main__':# suite = unittest.TestSuite()# suite.addTests([TestDemo("test_1")])# suite.addTests([TestDemo("test_2")])# runner = unittest.TextTestRunner()# runner.run(suite)unittest.main()
__setUpClass__
__setUp__
a
__tearDown__
__setUp__
b
__tearDown__
__tearDownClass__