首页 > 解决方案 > 日期时间问题的断言

问题描述

我正在对此进行 pytest,我看到中间有 T 导致我出现问题,这是我已将其更改为 datetime 的类型问题,因为它的类型仍然存在此问题。

assert model_setup.start_model_duration == start_model_duration
E       AssertionError: assert datetime.datetime(2019, 6, 2, 15, 4, 5) == '2019-06-02T15:04:05'
E         +datetime.datetime(2019, 6, 2, 15, 4, 5)
E         -'2019-06-02T15:04:05'

所以后来我把这两个做成了字符串,但中间的 T 仍然引起了问题

assert str(model_setup.start_model_duration) == str(start_model_duration)
E       AssertionError: assert '2019-06-02 15:04:05' == '2019-06-02T15:04:05'
E         - 2019-06-02T15:04:05
E         ?           ^
E         + 2019-06-02 15:04:05
E         ?           ^

标签: pythonpytestassertion

解决方案


您正在看到 isoformat:

>>> dt = datetime.datetime(2019, 6, 2, 15, 4, 5)
>>> dt.isoformat()
'2019-06-02T15:04:05'

因此,您可以使用以下任何一种:

# convert the datetime to a string
assert model_setup.start_model_duration.isoformat() == start_model_duration

# convert the string to a datetime
assert model_setup.start_model_duration == datetime.fromisoformat(start_model_duration)

推荐阅读