我有一个使用函数返回默认日期时间的模型:
class Company(models.Model):
q1_results_date = models.DateField(
verbose_name='Q1 financial results',
default=quarter_results_date(1),
blank=False,
null=False,
)
def quarter_results_date(month):
return datetime.datetime(
datetime.datetime.now().year,
month,
calendar.monthrange(datetime.datetime.now().year, month)[1]
)
我想对此进行单元测试,这需要我将 datetime.now() 设置为已知值。为此,我正在使用freezegun.freeze_time:
def test_quarter_results_date(self):
with freeze_time("2012-01-14"):
print('check datetime.now()', datetime.now())
c = Company.objects.create()
...
但是,尽管print语句显示2012-01-14,但日期时间并未冻结,因为它在计算时仍使用今天的日期c1.q1_results_date。
我该如何纠正这个问题?
胡子哥哥
相关分类