我正在尝试使用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
答案 0 :(得分:1)
这对我有用:
package / time_sleep.py
import time
def do_sleep():
time.sleep(10)
time.sleep(10)
time.sleep(10)
time.sleep(10)
time.sleep(10)
test_time_sleep.py
from unittest.mock import patch
from package.time_sleep import do_sleep
@patch("package.time_sleep.time")
def test_sleep1(mock_time):
do_sleep()
assert mock_time.sleep.call_count == 5
@patch("package.time_sleep.time.sleep")
def test_sleep2(mock_sleep):
do_sleep()
assert mock_sleep.call_count == 5
这看起来与您的代码非常相似(除了名称之外)。