[英]How to test python methods that include datetime.now() for different dates?
我有一些使用datetime
库中的datetime.datetime.now()
的方法。 我想为这些方法编写单元测试,就好像now()
是几个不同的时间(例如,每月的第 5 天,每月的第 15 天)。
例如,假设我有这个方法(真的只是一个例子,我没有这样的方法)
import datetime
def days_left_this_month():
return 30 - datetime.datetime.now().day
我想在该月的第 5 天测试该方法,即: days_left_this_month() == 25
如果now()
在该月的第 5 天。
做这个的最好方式是什么?
您可以使用freezegun
:
from freezegun import freeze_time
import datetime
import unittest
@freeze_time("2019-10-05")
def test():
assert datetime.datetime.now() == datetime.datetime(2019, 10, 05)
例如测试days_left_this_month
:
def days_left_this_month():
return 31 - datetime.datetime.now().day
我们可以:
@freeze_time("2019-10-05")
def test():
assert days_left_this_month() == 26
def test_multiple():
with freeze_time(x):
assert days_left_this_month() == y
with freeze_time(x):
assert days_left_this_month() == y
with freeze_time(x):
assert days_left_this_month() == y
with freeze_time(x):
assert days_left_this_month() == y
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.