[created_at: 2020-06-18]
在测试用例中,用setup方法可以进行测试前的初始化或参数配置等工作,用teardown方法可以进行测试后的清理还原退出等工作。
在pytest中setup和teardown分为如下几种情况:
- 模块级别 对整个.py文件作用 :setup_module/teardown_module
- 类级别 对单个测试类起作用:teardown_class/teardown_class
- 方法级别 对测试类中的测试方法起作用:setup/teardown
实例:
# 模块级别 --对这个文件起作用,所有测试类之前执行
def setup_module():
print("==>setup_module")
# 模块级别 --对这个文件起作用,所有测试类之后执行
def teardown_module():
print("==>teardown_module")
#测试类1
class Test_a:
#类级别开始--类里面所有方法之前执行
def setup_class(self):
print("==>setup_class1")
#类级别结束--类里面所有方法之后执行
def teardown_class(self):
print("==>teardown_class1")
#方法级开始--类里每个测试方法执行前执行
def setup(self):
print("-->setup_method1")
#方法级结束--类里每个测试方法执行后执行
def teardown(self):
print("-->teardown_method1")
def test_a(self):
print("-》》test_a1")
def test_b(self):
print("-》》test_b1")
#测试类2
class Test_b:
#类级别开始--类里面所有方法之前执行
def setup_class(self):
print("==>setup_class2")
#类级别结束--类里面所有方法之后执行
def teardown_class(self):
print("==>teardown_class2")
#方法级开始--类里每个测试方法执行前执行
def setup(self):
print("-->setup_method2")
#方法级结束--类里每个测试方法执行后执行
def teardown(self):
print("-->teardown_method2")
def test_a(self):
print("-》》test_a2")
def test_b(self):
print("-》》test_b2")
执行结果如下:
test_1.py::Test_a::test_a ==>setup_module #在文件中所有测试用例开始前执行,只执行一次
==>setup_class1 #在测试类的所有测试用例开始前执行,只执行一次
-->setup_method1 #在测试类的每个测试用例开始前执行
-》》test_a1 #测试类1的测试用例1
PASSED-->teardown_method1 #在测试类的每个测试用例执行后执行
test_1.py::Test_a::test_b -->setup_method1
-》》test_b1 #测试类1的测试用例2
FAILED-->teardown_method1
==>teardown_class1 #在测试类的所有测试用例执行完,最后执行,只执行一次
test_1.py::Test_b::test_a ==>setup_class2
-->setup_method2
-》》test_a2 #测试类2的测试用例1
PASSED-->teardown_method2
test_1.py::Test_b::test_b -->setup_method2
-》》test_b2 #测试类2的测试用例2
FAILED-->teardown_method2
==>teardown_class2
==>teardown_module #在所有测试用例执行完,最后执行,只执行一次