簡體   English   中英

Django模擬時區感知創建模型的日期時間

[英]Django mock timezone aware datetime on creating model

我有一個測試,可以在其中創建一些對象:

def test_get_courier_task_returns_couriers_tasks(self):
    with patch('django.utils.timezone.now', return_value=make_aware(datetime(2018, 1, 24, 11, 57))):
        task1 = TaskFactory()

        response = json.loads(MyAPI.get_tasks_list(self.user.username))
        print('[*] Response timestamp: {}'.format(response['content'][0]['timestamp']))

Task具有created_timestamp與現場auto_add_now設置為TRUE和to_json()方法,該方法是在使用get_tasks_list()以上:

class Task(models.Model):
    created_timestamp = models.DateTimeField(auto_now_add=True)

    def to_json(self):
        to_return = {
            'timestamp': self.created_timestamp.strftime('%d-%m-%Y %H:%M')
        }
        return to_return

不幸的是,測試給出了以下輸出:

[*]響應時間戳:24-01-2018 10:57

我已經檢查過這是時區感知的,但不是給我UTC + 1,而是保存時給UTC + 0。 我需要做什么? 我的設置中有USE_TZ = True ,並且已經應用​​了遷移。 這個問題對我的問題沒有幫助。

事實證明,給時區明確表示有助於:

with patch('django.utils.timezone.now', return_value=datetime(2018, 1, 24, 11, tzinfo=pytz.timezone('utc'))):

嘗試為make_aware提供make_aware的時區。

同樣在測試中檢查特定時間有點循環,可能不需要檢查它,只需確保它運行並產生時間戳即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM