用不同的测试参数化pytest函数

2024-10-02 00:44:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个场景,excel中有1000个测试用例。
是否有一种方法可以参数化测试,以便所有测试用例都能运行

我已经使用了pandas,并且在迭代过程中获得了所有测试用例:

def getCases():
    excel_file = 'path of excel'
    result = pd.read_excel(excel_file)
    count_row = result.shape[0]
    for i in range(count_row):
        r = result.iloc[i]
        return [r]

excel表中的每一行都是一个测试用例,返回的结果是字典的形式,我希望将其作为输入传递给我的测试用例

我使用以下夹具将这些参数传递给我的测试函数:

@pytest.fixture(params=PWC.getCases())
def getData(self, request):
    return request.param 

问题是在第一次迭代之后,它没有到达这个代码 我的测试用例不会返回到getCases()函数。 如何在pytest fixture中自定义参数,以便能够运行所有情况?
我能否将getCases内的范围作为参数传递


Tags: 方法参数returnpytestrequestdefcount场景
1条回答
网友
1楼 · 发布于 2024-10-02 00:44:11

要将控件返回到函数,必须使用yield而不是return。假设每一行都包含测试的输入数据和结果数据,则如下所示:

def getCases():
    excel_file = 'path of excel'
    result = pd.read_excel(excel_file)
    count_row = result.shape[0]
    for i in range(count_row):
        yield result.iloc[i]

@pytest.fixture(params=getCases())
def data(self, request):
    return request.param

def test_data(data):
    assert my_fct(data['input']) == data['result']

(假设测试函数中只有一个输入参数)

相关问题 更多 >

    热门问题