在函数的单元测试中,输出时间戳并在其上输入主机名以及其他值。在单元测试中,如果我在预期输出中添加一些时间戳和主机名,它将失败,因为每次调用函数时函数的时间戳都会改变,并且每次在不同的机器上运行时主机名都会改变。这是什么解决方法?我很感激你的意见。
函数输出:
{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
# and it can change every time we run it
但是这个日期时间和主机名会根据时间和机器而变化
我认为我将在单元测试中使用assertEqual或assertDictEqual的预期输出:
{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
是否有其他断言检查更适合这种情况?
你应该模拟datetime.now()
调用,无论它发生在哪里,这样创建日期时间总是一些固定值,你可以在测试期间断言。
这是一个常见的要求,所以已经有一些库支持 - 我可以推荐freezegun:
@freeze_time("09-10-2018 23:23:23")
def test_something():
data = something()
assert data == {'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}