Django在创建mod时模拟时区感知日期时间

2024-05-04 08:43:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试,我创建了几个对象:

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()中使用:

^{pr2}$

不幸的是,测试给出了以下输出:

[*] Response timestamp: 24-01-2018 10:57

我已经检查过这是时区识别,但不是给我UTC+1,而是在保存时给UTC+0。我该怎么办?我的设置中有USE_TZ = True,并应用了迁移。This question对我的问题没有帮助。在


Tags: 对象方法testselfjsontruegetresponse
2条回答

尝试为^{}提供所需的时区。在

另外,在测试中检查特定时间有点循环,可能不需要检查它,只需确保它运行并生成时间戳。在

事实证明,明确给出时区有助于:

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

相关问题 更多 >