测试时如何在 Django/DRF 中将日期时间转换为字符串

Erd*_*ray 5 python django django-rest-framework

我正在测试一个端点,它自然返回一个包含日期时间字符串的 JSON。

我在测试中比较响应内容如下:

assert serializer_instance.data == {
    "created_at": str(model_instance.created_at),
    "updated_at": str(model_instance.updated_at),
}
Run Code Online (Sandbox Code Playgroud)

created_at并且updated_at肯定是DateTimeFields。然而,在这种情况下,测试失败:

E         Differing items:
E         {'created_at': '2020-06-24T12:42:03.578207+03:00'} != {'created_at': '2020-06-24 09:42:03.578207+00:00'}
E         {'updated_at': '2020-06-24T12:42:03.578231+03:00'} != {'updated_at': '2020-06-24 09:42:03.578231+00:00'}
Run Code Online (Sandbox Code Playgroud)

因此str对日期时间使用不同的格式。当然,使用 可以成功通过测试用例strftime,但是应该有一个内部函数可以在 Django 或 Django Rest Framework 中轻松完成此操作,我想学习它。

提前致谢。


环境

  • Python 3.8.3
  • 姜戈 2.2.12
  • Django Rest 框架 3.11.0

Mar*_*fel 0

您可以使用:

myDate.strftime('%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

或者

'{:%m/%d/%Y}'.format(myDate)
Run Code Online (Sandbox Code Playgroud)