【问题标题】:unittest, mock time.sleep in other packageunittest,模拟 time.sleep 在其他包中
【发布时间】:2022-01-18 19:51:41
【问题描述】:

我有一个 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") 装饰器吗?

【问题讨论】:

    标签: python-3.x unit-testing import mocking sleep


    【解决方案1】:

    通过实验,我找到了答案。我不得不使用

    sleeppatch = patch("my_package.my_module.time.sleep")
    sleeppatch.start()
    

    在测试类的setUp 方法中 和:

    sleeppatch.stop()
    

    tearDown 方法中。

    使用装饰,补丁停得太早了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2021-04-12
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多