python - pytest requests_mock 不适用于产量
问题描述
我正在尝试测试旧代码,但遇到了 pytest 的 requests_mock 的问题。例子:
import types
import requests_mock
import requests
def gen_yield():
data = requests.get('http://tobemocked').json()
for i in data:
yield i
def test_gen_yield():
with requests_mock.Mocker() as m:
m.get(requests_mock.ANY, json=[1, 2])
result = gen_yield()
assert isinstance(result, types.GeneratorType)
assert next(result) == 1
此示例将崩溃,因为模拟不起作用,但在将此代码更改为:
def gen_yield():
data = requests.get('http://tobemocked').json()
for i in data:
return i
def test_gen_yield():
with requests_mock.Mocker() as m:
m.get(requests_mock.ANY, json=[1, 2])
result = gen_yield()
assert result == 1
测试通过。这是故意的吗?也许我对 ing 有误解,yield
或者应该以不同的方式处理这个测试用例。
解决方案
推荐阅读
- javascript - 有没有办法绕过 Chrome desktopCapture 的选择媒体屏幕?
- php - 如何在我的 JSON 字符串 POST 前后删除斜杠
- php - laravel 中的动态关系使用子查询来进行归属关系
- java - 用 main.java 打开 loginFrame.java
- typescript - 使用自定义匹配器扩展 expect-webdriverio
- python - 即使目录正确,Visual Studio 也找不到我的文件
- python - 如何在pyspark中使用正则表达式验证多个电子邮件地址
- path-finding - A* 在多个网格上寻路?
- asp.net-mvc - ASP.Net MVC-如何在个人身份验证模式下显示登录按钮?
- python - 猪拉丁语翻译器:从 Python 开始