是的,pytest可以使用@pytest.fixture
装饰器来定义case级别的setup和teardown函数。在底层实现上,这些被@pytest.fixture
装饰的函数会在测试用例之前和之后自动执行。
例如,你可以定义一个case级别的setup函数如下:
import pytest
@pytest.fixture(scope='function')
def setup_function():
# setup code
print("case级别的setup函数")
def test_case1(setup_function):
# test case code
print("执行测试用例1")
def test_case2(setup_function):
# test case code
print("执行测试用例2")
运行这些测试用例时,每个测试用例执行之前都会先执行setup_function函数,然后执行测试用例代码。如果你还想定义一个case级别的teardown函数,可以使用yield
语句。
import pytest
@pytest.fixture(scope='function')
def setup_function_teardown():
# setup code
print("case级别的setup函数")
yield
# teardown code
print("case级别的teardown函数")
def test_case3(setup_function_teardown):
# test case code
print("执行测试用例3")
def test_case4(setup_function_teardown):
# test case code
print("执行测试用例4")
这样,在每个测试用例执行后,会自动执行teardown函数。整个过程中都是由pytest来管理和执行setup和teardown函数。