python模拟导入导入模块

时间:2020-04-23 13:51:16

标签: python-3.x python-unittest.mock

我正在尝试使用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

1 个答案:

答案 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

这看起来与您的代码非常相似(除了名称之外)。