Pythonでdatetime.datetime.today()をoverwriteする
新規タスクが「今日の日付」になるのでテストしづらい
「今日」を「2020/04/01」などに固定したい
そのためには datetime.datetime.today() のモックが必要 どうやる?
Answer
datetime.datetimeのサブクラスつくって、書き換えたいメソッドをオーバーライドする
元のdatetime.datetimeに、サブクラスの方を代入
code:a.py
import datetime
import unittest
import helper as tritask
class datetime_FixedToday(datetime.datetime):
@classmethod
def today(cls):
return cls(2020, 4, 1)
datetime.datetime = datetime_FixedToday
# ...
ちなみにunittest.mockを使う案はダメ
datetime.datetimeがビルトインなので書き換えることができない