我想嘲笑时刻,以便能够在我的测试如设置一定的时间来DateTimeField
类型的字段与auto_now_add=True
:模拟计时=真
class MyModel:
...
created_at = models.DateTimeField(auto_now_add=True)
...
class TestMyModel(TestCase):
...
def test_something(self):
# mock current time so that `created_at` be something like 1800-02-09T020000
my_obj = MyModel.objects.create(<whatever>)
# and here my_obj.created_at == 1800-02-09T000000
我知道当前日期是用于这种类型的字段always,这就是为什么我在寻找一个替代以某种方式嘲笑系统定时,但只是在一个方面。
我已经尝试了一些方法,例如,创建具有freeze_time
上下文,但没有奏效:
with freeze_now("1800-02-09"):
MyModel.objects.create(<whatever>)
# here the created_at doesn't fit 1800-02-09
OFC我想,这是由于机器背后是如何创建与对象auto_now_add=True
。我不想删除auto_now_add=True
并使用默认值。
有没有一种方法可以模拟计时,以便我们可以做到这样的领域在特定环境下获得我想要的时间?
我使用Django 1.9.6
和Python 3.4
Django和Python版本? – theWanderer4865
你也许可以在日期时间字段上模拟pre_save方法 - 有点恶心,但是,嘿,时间正确吗? – theWanderer4865
我正在使用Django 1.9.6和Python 3.4 – trinchet