python - 将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 的最佳方法是什么?
解决方案
当您使用时,yield
您正在生成一个迭代器,因此您需要在比较之前迭代结果。
你需要这样的东西:
assert [print_max(input1)] == output1 # create list from iterator
推荐阅读
- typescript - TypeScript 错误 TS2339:“EventTarget”类型上不存在属性“匹配”
- elasticsearch - 跨索引弹性搜索中的父子关系
- vba - Windows 窗体应用程序如何从列表框中添加项目
- arrays - 在 if 语句 C 中声明一个新变量
- haskell - 如何制作在 github markdown 和 hackage 中工作的表格?
- python - 如果其中一个可以引发异常,如何结束 ThreadPoolExecutor 中的所有任务
- mongodb - 是否可以使用 forEach 方法更新 MongoDb 文档?
- java - 在 Java 中获取 Map 的前 5 个元素
- gem5 - 用 gem5 测量加速
- php - vscode-phpcs 扩展在编辑器中不起作用,但在版本控制中,我可以修复它吗?