test.py
@patch('I want to patch datetime.datetime.now here')
def test_function():
import my_module
my_module.some_function()
...
my_module.py
from datetime import datetime
def some_function():
now = datetime.now()
顺便说一下,我正在使用pytest。
答案 0 :(得分:1)
我认为freezegun可能是您正在寻找的模块。
答案 1 :(得分:0)
您需要修补要替换的特定导入,并为模拟提供参数;尝试类似的事情:
from unittest.mock import patch
import my_module
@patch('my_module.datetime')
def test_function(datetime):
datetime.now.return_value = ...
my_module.some_function()
...
datetime.now.assert_called_once_with()
要仅修补now
,请使用:
@patch.object('my_module.datetime', 'now')
def test_function(now):
now.return_value = ...
my_module.some_function()
...
now.assert_called_once_with()