【发布时间】:2020-04-23 13:51:16
【问题描述】:
我正在尝试使用 unittest.mock 来模拟被测模块中的导入。
我看到的是,尽管我的模块调用 sleep 5 次,但我在测试函数中与之交互的模拟对象并不是我所期望的。
我假设我没有正确地做某事。我确实阅读了文档,但我确定我没有正确执行此操作。
"""example.py"""
import time
def mycode():
time.sleep(10)
time.sleep(10)
time.sleep(10)
time.sleep(10)
time.sleep(10)
"""test_example.py"""
import example
from unittest.mock import patch
@patch("example.time.sleep")
def test_example(mock_time):
example.mycode()
assert mock_time.call_count == 5
【问题讨论】:
-
看起来像是错字。你需要
assert mock_time.sleep.call_count == 5(你使用get而不是sleep)。 -
不错但同样的错误
Expected :5 Actual :0 -
我通过重构和模拟 sleep 方法更改了问题以修复错误。我可以模拟整个时间对象吗?
-
是的 - 我刚刚用你的第一个版本(有更正)试了一下,对我来说效果很好。
-
用@patch("example.time") 试过了吗?不是时间。睡觉?这似乎对我不起作用,也不会模拟时间。如果你为你工作,你能告诉我你的跑步情况吗?
标签: python-3.x python-unittest.mock