我在 django 模型中有一个方法,可以相对于当前时间进行计算。这是一个片段:
def next_date():
now = datetime.now()
trial_expires = max(self.date_status_changed + timedelta(self.trial_days), now)
return timezone.datetime(trial_expires.year, trial_expires.month+1, 1, tzinfo=trial_expires.tzinfo)
使用 unittest 在 django/python 中测试这个的正确方法是什么?我想做的是能够在测试中为“现在”硬编码一些值,这样我就可以尝试各种边缘情况。理想情况下,我想避免依赖测试中的当前时间和日期。
一种方法是修改我的方法以接受一个可选参数,该参数将覆盖它使用的“现在”值。python是否有任何功能可以做类似的事情而不必修改我的方法签名?