unittest 图一 和 pytest 图二 对比
setup()
setupClass()
teardown()
teardownClass()
模块级别:setup_module、teardown_module
函数级别:setup_function、teardown_function,不在类中的方法
类级别:setup_class、teardown_class
方法级别:setup_method、teardown_method
方法细化级别:setup、teardown
unittest
image.png
pytest
import pytest
def setup_module():
print("setup_module():在模块最之前执行,且只执行一次")
def teardown_module():
print("teardown_module:在模块之后执行,且只执行一次")
def setup_function():
print("setup_function():每个方法之前执行")
def teardown_function():
print("teardown_function():每个方法之后执行")
def test_1():
print("正在执行用例1")
x = "this"
assert 'h' in x
class TestClass(object):
def setup_class(self):
print("setup_class(self):每个类之前执行一次,只执行一次")
def teardown_class(self):
print("teardown_class(self):每个类之后执行一次,只执行一次")
def test_A(self):
print("正在执行用例A")
x = "this"
assert 'h' in x
def test_B(self):
print("正在执行B")
assert 1 == 1
def test_2():
print("正在执行用例2")
assert 1 == 1
if __name__ == "__main__":
pytest.main(["-q", "test_setup_teardown_pytest.py"])
image.png
可以看出 方法 和 类,先出现的先执行。
模块 之前执行setup_module(),模块之后执行teardown_module()
方法 之前执行 setup_function(),方法之后执行 teardown_function()
类之前执行 setup_class(self) ,类之后执行teardown_class(self)
setup_module()
setup_function()
test_1
teardown_function()
setup_class(self)
test_A
test_B
teardown_class(self)
setup_function()
test_2
teardown_function()
teardown_module
main方法中的-q,为pytest打印测试用例的执行结果级别。