【问题标题】:unittest check for NanNan的单元测试检查
【发布时间】:2019-05-12 12:53:20
【问题描述】:

我面临检查我的函数是否在其中一个单元测试用例中返回 nan 的问题。

做了一些研究,我发现this question 已经询问了如何做到这一点并提供了解决方案。

其中一个解决方案是使用assertTrue(math.isnan(nan_value)),但如果x 既不是float 也不是Real,它的缺点是提高TypeError

另一种解决方案是定义一类数字断言,您可以在其中处理 nan 情况。我可以实现它并愉快地解决我的问题。

但是,检查 nan 看起来像是很多人可能需要做的常见测试(在单元测试中或只是在普通的 if/else 块中)。

所以我的问题有点像:是否已经有一个以标准方式执行此操作的实现,所以任何检查 nans 的人都将始终运行相同的代码并获得相同的结果?或者常见的方法是自己定义链接问题中提供的检查?

numpy、math 或 unittest 库中是否存在这样的功能?我认为在 unittest 中有一个assertNan 函数会非常有用

【问题讨论】:

    标签: python nan python-unittest


    【解决方案1】:

    鉴于对于非float 数据类型,无论哪种方式都不是 nan,我会为and 逻辑子句使用评估(和跳过)顺序的隐式特征。也就是说,如果第一个操作数是False,则不计算第二部分:

    assertTrue(type(nan_value) is float and math.isnan(nan_value))
    

    在上面的代码中,如果nan_value 的类型不是float,那么and 子句就是False,因此不会评估math.isnan(nan_value),也不会生成TypeError

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多