在 pytest 中,你可以使用 pytest.fixture
装饰器来创建参数化的测试用例,并且可以在这些 fixture 中进行 setup 和 teardown 操作
以下是一个简单的例子,展示了如何将参数传递给 setup 和 teardown:
import pytest
# 定义一个参数化的 fixture
@pytest.fixture(scope="module", params=[1, 2, 3])
def parametrized_fixture(request):
# setup 操作
print(f"Setup with parameter: {request.param}")
# 使用 yield 语句来提供 fixture 的返回值,并执行 teardown 操作
yield request.param
# teardown 操作
print(f"Teardown with parameter: {request.param}")
# 使用参数化的 fixture
def test_with_fixture(parametrized_fixture):
print(f"Test with parameter: {parametrized_fixture}")
在这个例子中,parametrized_fixture
是一个参数化的 fixture,它接受一个参数 request.param
,这个参数会在每个测试用例运行时改变。在 fixture 中,你可以进行 setup 操作(在 yield 语句之前),然后在 yield 语句之后进行 teardown 操作。
当你运行这个测试时,你会看到每个参数都会执行一次 setup 和 teardown 操作,并且每个参数都会运行一次测试用例。
注意:在这个例子中,scope="module"
表示这个 fixture 在每个模块中只会被创建一次。你可以根据需要更改 scope 的值,例如 function
(默认值,每个测试函数都会创建一个新的 fixture 实例)、class
(每个测试类都会创建一个新的 fixture 实例)或 session
(在整个测试会话中只会创建一次 fixture 实例)。
另外,你还可以使用 conftest.py
文件来共享 fixtures,这样你就可以在多个测试文件中使用相同的 fixture。
领取专属 10元无门槛券
手把手带您无忧上云