【发布时间】:2023-04-03 05:32:01
【问题描述】:
我想使用一个列表(转换为生成器)来模拟我的 API 调用(使用 unittest.mock
)。我的功能是:
def monitor_order(order_id)
order_info = client.get_order_status(order_id)
order_status = order_info['status']
while order_status != 'filled':
print('order_status: ', order_status)
time.sleep(5)
order_info = client.get_order_status(order_id)
order_status = order_info['status']
return order_info
我的测试函数是:
@patch('my_package.client.get_order_status')
def test_monitor_order(mocked_get_order_status):
order_states = [
dict(status='open'),
dict(status='open'),
dict(status='filled'),
]
# Make into a generator
status_changes = (status for status in order_states)
mocked_get_order_status.return_value = next(order_states)
# Execute function to test
monitor_order("dummy_order")
但是,我可以看到执行测试时状态始终是“打开”:
order_status: open
order_status: open
order_status: open
我想我明白它为什么错了,但我该如何正确实施呢?
【问题讨论】:
-
kraken_status_changes
定义在哪里? -
生成器部分在哪里?
-
大家好,感谢收看,编辑如上。
标签:
python
mocking
generator
patch
python-unittest.mock
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用带有 Python 模拟的生成器来复制服务器响应 - Python技术站