如何使用volatile输出doctest函数?

时间:2018-03-13 20:35:45

标签: python unit-testing docstring doctest

当doctest运行时,volatile输出不同,因此测试失败。理想情况下(但不一定),解决方案应尽量避免在docstring之外编写可测试代码,以避免影响测试覆盖率。

from datetime import datetime
def get_now():
    """
    >>> get_now()
    datetime.datetime(2018, 3, 13, 20, 26, 44, 258862)
    """
    return datetime.now()

1 个答案:

答案 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()