How to monkey patch datetime.datetime.now()?
本问题已经有最佳答案,请猛点这里访问。
test.py
1 2 3 4 5 | @patch('I want to patch datetime.datetime.now here') def test_function(): import my_module my_module.some_function() ... |
my_module.py
1 2 3 4 | from datetime import datetime def some_function(): now = datetime.now() |
顺便说一下,我正在使用pytest。
我认为freezegun可能是你正在寻找的模块。
您需要修补要替换的特定导入,并为模拟提供参数; 尝试类似的东西:
1 2 3 4 5 6 7 8 9 10 | 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() |
要仅修补
1 2 3 4 5 6 | @patch.object('my_module.datetime', 'now') def test_function(now): now.return_value = ... my_module.some_function() ... now.assert_called_once_with() |