Jak pozorować datetime.now () w metodzie klasowej dla testów jednostkowych?
Próbuję napisać testy dla klasy, która ma takie metody jak:
import datetime
import pytz
class MyClass:
def get_now(self, timezone):
return datetime.datetime.now(timezone)
def do_many_things(self, tz_string='Europe/London'):
tz = pytz.timezone(tz_string)
localtime_now = self.get_now(tz)
...
return things
Chcę to przetestować i aby to zrobić, muszę się upewnić, żedatetime.datetime.now()
wywołanie zwraca coś przewidywalnego.
Czytałem wiele przykładów użyciaDrwić w testach, ale nie znalazłem niczego podobnego do tego, czego potrzebuję, i nie mogę się dowiedzieć, jak go użyć w moich testach.
Oddzieliłemget_now()
metoda na wypadek, gdyby łatwiej było z niej wykpić, zamiastdatetime.datetime.now()
, ale wciąż jestem zakłopotany. Jakieś przemyślenia, jak napisać do tego UnitTests za pomocą Mocka? (To wszystko w Django, fwiw; nie jestem pewien, czy w tym przypadku ma to znaczenie).