首页 > 解决方案 > 将pytest添加到python中的yield函数?

问题描述

我认为这样事情回答了我的问题,我只是不知道如何实现它。

我写了这个函数:

def print_max(list_name,k):
        for i in range(len(list_name)-(k-1)):
                yield (max(list_name[i:i+k]))


print(print_max([10,5,2,7,8,7],3))

我想将其添加到 pytest。这通常是我运行 pytest 的方式:

@pytest.marks.parametrize('input1','output1',[[10,5,2,7,8,7], X]:
def test_fun(input1, output1):
    assert print_max(input1) == output1

我将在这个 pytest 中将 X 更改为什么以允许该函数具有产量输出?或者,鉴于函数是产量,执行此 pytest 的最佳方法是什么?

标签: pythonpytest

解决方案


当您使用时,yield您正在生成一个迭代器,因此您需要在比较之前迭代结果。

你需要这样的东西:

assert [print_max(input1)] == output1   # create list from iterator

推荐阅读