Python 如何修补datetime.datetime.now()?
test.py my_module.pyPython 如何修补datetime.datetime.now()?,python,monkeypatching,Python,Monkeypatching,test.py my_module.py @patch('I want to patch datetime.datetime.now here') def test_function(): import my_module my_module.some_function() ... 顺便说一句,我正在使用pytest。您需要修补要替换的特定导入,并为mock提供一个参数;尝试以下方法: from datetime import datetime def some_fu
@patch('I want to patch datetime.datetime.now here')
def test_function():
import my_module
my_module.some_function()
...
顺便说一句,我正在使用pytest。您需要修补要替换的特定导入,并为mock提供一个参数;尝试以下方法:
from datetime import datetime
def some_function():
now = datetime.now()
要现在仅修补
,请使用:
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()
我想可能就是你要找的模块。在哪里打补丁?!您试图修补的导入是什么?它是如何编写的?这里有一个问题。我不想修补整个datetime类,只想
datetime.now()
,因为我需要其他方法。它说:AttributeError:type object'datetime.datetime'没有属性'rsplit'
@laike9m哪一行,修补程序?也许我错过了一些quotes@laike9m那有用吗?我不在家,所以无法测试,抱歉。好吧,我发现了一个类似的问题:,尽管它似乎不适用于我,因为我无法替换其他模块中的东西。不管怎样,mock
无法修补这个补丁,根据那个问题和我的实验。我知道并且以前用过冰枪,这不是我需要的。
@patch.object('my_module.datetime', 'now')
def test_function(now):
now.return_value = ...
my_module.some_function()
...
now.assert_called_once_with()