Pytest的前置函数与后置函数
主要介绍两种定义风格 xunit 和 unittest
xunit风格
import pytest
class TestFer:
def setup_method(self):
""" 测试类中每个测试用例执行之前执行一次 """
print("setup_method")
def teardown_method(self):
""" 测试类中每个测试用例执行之后执行一次 """
print("teardown_method")
@classmethod
def setup_class(cls):
""" 测试类中用例执行之前执行一次 """
print("setup_class")
@classmethod
def teardown_class(cls):
""" 测试类中所有用例执行结束执行一次 """
print("teardown_class")
def test_class_a(self):
""" 测试类中的测试函数a """
print("test_class_a")
def test_class_b(self):
""" 测试类中的测试函数b """
print("test_class_b")
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_function_a():
""" 测试函数a """
print("test_function_a")
def test_function_b():
""" 测试函数b """
print("test_function_b")
if __name__ == '__main__':
pytest.main(['-s'])
"""
执行结果
setup_module
setup_class
setup_method
test_class_a
teardown_method
setup_method
test_class_b
teardown_method
teardown_class
setup_function
test_function_a
teardown_function
setup_function
test_function_b
teardown_function
teardown_module
"""
unittest风格 与unittest一致
import pytest
class TestFer():
@classmethod
def setUpClass(cls):
""" 类用例执行之前执行一次 """
print("setUpClass")
@classmethod
def tearDownClass(cls):
""" 类所有用例执行结束之后执行一次 """
print("tearDownClass")
def setUp(self):
""" 类中每个用例执行之前执行 """
print("setUp")
def tearDown(self):
""" 类中每个用例执行之后执行 """
print("tearDown")
def test_a(self):
print("test_a")
def test_b(self):
print("test_b")
if __name__ == '__main__':
pytest.main(['-s'])
"""
执行结果
setUpClass
setUp
test_a
tearDown
setUp
test_b
tearDown
tearDownClass
"""
|