具有时间戳的函数的Python单元测试

问题描述 投票:1回答:1

在函数的单元测试中,输出时间戳并在其上输入主机名以及其他值。在单元测试中,如果我在预期输出中添加一些时间戳和主机名,它将失败,因为每次调用函数时函数的时间戳都会改变,并且每次在不同的机器上运行时主机名都会改变。这是什么解决方法?我很感激你的意见。

函数输出:

{'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',...}

是否有其他断言检查更适合这种情况?

python unit-testing datetime assertion
1个回答
1
投票

你应该模拟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',...}
© www.soinside.com 2019 - 2024. All rights reserved.