当doctest运行时,volatile输出不同,因此测试失败。理想情况下(但不一定),解决方案应尽量避免在docstring之外编写可测试代码,以避免影响测试覆盖率。
from datetime import datetime
def get_now():
"""
>>> get_now()
datetime.datetime(2018, 3, 13, 20, 26, 44, 258862)
"""
return datetime.now()
答案 0 :(得分:1)
您希望断言而不是发生效果,因此您应该修补日期时间并断言now
已被调用。
这是未经测试的,可能无效,但应该说明这个想法:
from datetime import datetime
def get_now():
"""
>>> from unittest import mock
>>> my_module.datetime.now = lambda: datetime(2018, ...)
>>> get_now()
datetime.datetime(2018, ...)
"""
return datetime.now()