【发布时间】:2022-01-21 10:26:26
【问题描述】:
我正在学习在编写单元测试时使用模拟。但是,如果我不嘲笑它们,我的测试总是会花费一些时间。考虑这个示例函数:
application.py
from time import sleep
def is_windows():
# fake slow operation
sleep(5)
return True
def get_operating_system():
return 'Windows' if is_windows() else 'Linux'
application_test.py
from application import get_operating_system
# 'mocker' fixture provided by pytest-mock
def test_get_operating_system(mocker):
# Mock the slow function to return True
mocker.patch('application.is_windows', return_value=True)
assert get_operating_system() == 'Windows'
由于某种原因,此测试的运行时间总是超过 5 秒。如果我从is_windows() 中删除sleep(5),那么测试会在一秒钟内运行,所以看起来这个函数根本没有被嘲笑!我在这里做错了吗?任何帮助表示赞赏。谢谢。
编辑:我正在从 PyCharm 运行我的测试。
【问题讨论】:
-
我添加了计时输出,但您的设置中发生了其他事情。你的目录是什么样的,测试是如何运行的?
标签: python-3.x pytest pytest-mock