python 测试用例中的函数的补丁函数是否可用?
Is it available to patch function of function in python 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')
?
您需要在要更改其行为的事物的命名空间中进行修补。在这种情况下,您可能需要:
@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
这是一个例子。
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')
?
您需要在要更改其行为的事物的命名空间中进行修补。在这种情况下,您可能需要:
@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