gpt4 book ai didi

python - 如何在pytest中的mark.parametrize中使用fixture

转载 作者:行者123 更新时间:2023-12-04 16:45:26 24 4
gpt4 key购买 nike

我有一个像下面这样的场景:

@pytest.fixture(scope="module", params=[5, 10])
def get_data(request):
data = []
for i in range(request.param):
data.append((i, 2))
return data


@pytest.mark.parametrize(('test_input','expected'), get_data)
def test_data_types(test_input, expected):
assert (test_input%expected) == 0

但我收到一个错误“类型错误:‘函数’对象不可迭代”。如何实现我的目标。我读到我们不能在参数化测试函数中使用 fixture 作为参数,但我想要一些替代方案。

最佳答案

正如 hoefling 所提到的,您可以使用普通函数来获取数据。这是一个简单的例子。
我的每个测试文件中都有一个 get_data() 函数,它从 Excel 文件的不同工作表中提取数据。

from utils.excel_utils import ExcelUtils
import pytest


def get_data():
data = ExcelUtils("inputData.xlsx", "Session").get_input_rows()
for row in data:
yield row


@pytest.mark.parametrize("test_input", get_data())
def test_session(test_input):
print(test_input)
assert "session" in test_input

关于python - 如何在pytest中的mark.parametrize中使用fixture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com