python @pytest.fixture示例及用法
@pytest.fixture
是 pytest 测试框架中的一个非常有用的功能,它允许你定义可以在多个测试用例之间共享的设置和清理代码。通过使用 fixture,你可以减少重复的代码,并使得测试用例更加清晰和模块化。
下面是一个简单的示例,展示了如何使用 @pytest.fixture
:
import pytest
# 定义一个 fixture
@pytest.fixture
def setup_data():
# 这里是设置代码,例如创建一些测试数据
data = [1, 2, 3, 4, 5]
return data
# 使用 fixture 的测试用例
def test_sum(setup_data):
# setup_data 是从 fixture 中获取的
assert sum(setup_data) == 15
def test_length(setup_data):
# 同样,这里也使用了 setup_data fixture
assert len(setup_data) == 5
在这个例子中,我们定义了一个名为 setup_data
的 fixture,它返回一个包含一些数字的列表。然后,我们在两个测试用例 test_sum
和 test_length
中使用了这个 fixture。pytest 会自动调用 fixture 函数,并将返回的值传递给使用它的测试用例。
你还可以给 fixture 添加参数,使得它可以更加灵活:
@pytest.fixture(params=[1, 2, 3])
def number(request):
return request.param
def test_number(number):
assert number > 0
在这个例子中,number
fixture 使用 params
参数来指定多个可能的返回值。pytest 会为每个参数值运行一次 test_number
测试用例。
此外,你还可以使用 scope
参数来指定 fixture 的作用域。例如,scope="module"
意味着 fixture 将在整个模块的所有测试用例之间共享。默认值是 "function"
,意味着 fixture 将在每个测试用例之间独立运行。
这只是 @pytest.fixture
的基本用法。pytest 的 fixture 功能非常强大,还可以与其他插件和钩子函数结合使用,实现更复杂的设置和清理逻辑。