我有一个函数可以根据今天的日期执行一些逻辑:
def do_work()
todays_date = datetime.datetime.today().date()
#do something based on todays_date
我想编写一些单元测试,以验证此功能在一年中的给定日期是否能够实现预期功能。有什么方法可以更改不保存功能而存储在todays_date
中的值?
我怀疑不是,但只是想问一下。
答案 0 :(得分:1)
在这种情况下,mock module会派上用场。该文档提供了an example关于如何部分模拟固定日期的信息。
>>> from datetime import date
>>> with patch('mymodule.date') as mock_date:
... mock_date.today.return_value = date(2010, 10, 8)
... mock_date.side_effect = lambda *args, **kw: date(*args, **kw)
...
... assert mymodule.date.today() == date(2010, 10, 8)
... assert mymodule.date(2009, 6, 8) == date(2009, 6, 8)
...