我想嘲笑時刻,以便能夠在我的測試如設置一定的時間來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