【问题标题】:Python unit test for a function that has timestamp具有时间戳的函数的 Python 单元测试
【发布时间】:2018-09-11 04:11:31
【问题描述】:

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

函数的输出:

{'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】:

    您应该模拟 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',...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多