0

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

1 回答 1

1

这对我有用:

包/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

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

于 2020-04-24T11:49:31.653 回答