我可以更改今天的日期以进行测试吗?

时间:2019-01-16 14:53:12

标签: python

我有一个函数可以根据今天的日期执行一些逻辑:

def do_work()
  todays_date = datetime.datetime.today().date()
  #do something based on todays_date

我想编写一些单元测试,以验证此功能在一年中的给定日期是否能够实现预期功能。有什么方法可以更改不保存功能而存储在todays_date中的值?

我怀疑不是,但只是想问一下。

1 个答案:

答案 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)
...