unittest, mock time.sleep 在其他包中
unittest, mock time.sleep in other package
我有一个 Pycharm 项目,其中包含一些正在测试的包代码,我可以从项目中的另一个模块导入 import my_package
之类的包,因为 Pycharm 配置 python将 projectdir 包含到它的搜索路径中。
my_package
中的 my_module
导入 time
并使用 time.sleep
,我想模拟它。
projectdir/my_package
__init__.py
my_module.py
projectdir/tests
test_my_package.py
在测试中我有以下代码:
import unittest
from unittest.mock import patch
from my_package import my_module
@patch("my_package.my_module.time.sleep")
class TestMyPackage(unittest.TestCase):
def test_bla(self, timepatch):
my_module.my_function()
我遇到的问题是,time.sleep
没有被模拟出来。我的单元测试每个测试用例需要大约 0.5 秒,这我太多了。我想我在错误的地方打补丁。
你能帮我修复 @patch("my_package.my_module.time.sleep")
装饰器吗?
通过试验我找到了答案。我不得不使用
sleeppatch = patch("my_package.my_module.time.sleep")
sleeppatch.start()
在测试类的setUp
方法中
和:
sleeppatch.stop()
在 tearDown
方法中。
正在使用装修,补丁停的太早了
我有一个 Pycharm 项目,其中包含一些正在测试的包代码,我可以从项目中的另一个模块导入 import my_package
之类的包,因为 Pycharm 配置 python将 projectdir 包含到它的搜索路径中。
my_package
中的 my_module
导入 time
并使用 time.sleep
,我想模拟它。
projectdir/my_package
__init__.py
my_module.py
projectdir/tests
test_my_package.py
在测试中我有以下代码:
import unittest
from unittest.mock import patch
from my_package import my_module
@patch("my_package.my_module.time.sleep")
class TestMyPackage(unittest.TestCase):
def test_bla(self, timepatch):
my_module.my_function()
我遇到的问题是,time.sleep
没有被模拟出来。我的单元测试每个测试用例需要大约 0.5 秒,这我太多了。我想我在错误的地方打补丁。
你能帮我修复 @patch("my_package.my_module.time.sleep")
装饰器吗?
通过试验我找到了答案。我不得不使用
sleeppatch = patch("my_package.my_module.time.sleep")
sleeppatch.start()
在测试类的setUp
方法中
和:
sleeppatch.stop()
在 tearDown
方法中。
正在使用装修,补丁停的太早了