它可以修补python测试用例中的函数吗?

时间:2019-02-18 01:50:02

标签: python mocking python-unittest testcase

这是一个例子。

main / something.py

from example.something import get_utc_time, get_jst_time

print(get_utc_time())
print(get_jst_time())

example / something.py

from django.utils import timezone

def get_utc_time():
    return timezone.now()

def get_jst_time():
    return timezone.now() + timezone.timedelta(hours=9)

我想做下面的测试用例。但是,这不可用。
有人有什么想法吗?

测试用例

@patch('main.something.example.something.timezone.now')
def test_execute(mock_now):
    ....

我是否必须将两个功能都设置为补丁,如:

@patch('main.something.get_utc_time')@patch('main.something.get_jst_time')

1 个答案:

答案 0 :(得分:1)

您需要在要更改其行为的事物的名称空间中打补丁。在这种情况下,您可能需要:

@patch('example.something.timezone.now')
def test_execute(mock_now):
    mock_now.return_value = 'a mock time'  # probably want to return a time not a string