记录pytest 与 unittest内的前后置函数操作区别
pytest示例
setup_class:单个测试类开始前执行1次
setup:每个测试函数执行前执行1次
teardown:每个测试函数执行结束后执行1次
teardown_class:单个测试类结束前执行1次
可拆开任意组合使用,若都同时使用, 则执行顺序如下
执行顺序:setup_class ==> (setup ==> teardown) * n ==>teardown_class
import pytest
class 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__
unittest示例
setUp:每个测试函数执行前执行1次
tearDown:每个测试函数执行结束后执行1次
setUpClass:单个测试类开始前执行1次
tearDownClass:单个测试类结束前执行1次
import unittest
class TestDemo(unittest.TestCase):
def setUp(self):
print("__setUp__")
def tearDown(self):
print("__tearDown__")
@classmethod
def setUpClass(cls):
print("__setUpClass__")
@classmethod
def 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__