Python Nan的单元测试检查
我面临的问题是检查我的函数在一个unittest用例中是否返回nan 我做了一点研究,发现已经有人问了如何做,并提供了一个解决方案 其中一种解决方案是使用Python Nan的单元测试检查,python,nan,python-unittest,Python,Nan,Python Unittest,我面临的问题是检查我的函数在一个unittest用例中是否返回nan 我做了一点研究,发现已经有人问了如何做,并提供了一个解决方案 其中一种解决方案是使用assertTrue(math.isnan(nan_值)),但如果x既不是float也不是Real,则会产生TypeError 另一种解决方案是定义一类数字断言,您可以在其中处理nan情况。我可以实现这一点,并愉快地解决我的问题 然而,检查nan看起来像是很多人可能需要做的一个常见测试(在单元测试中或者只是在普通if/else块中) 所以我的问
assertTrue(math.isnan(nan_值))
,但如果x
既不是float
也不是Real
,则会产生TypeError
另一种解决方案是定义一类数字断言,您可以在其中处理nan情况。我可以实现这一点,并愉快地解决我的问题
然而,检查nan看起来像是很多人可能需要做的一个常见测试(在单元测试中或者只是在普通if/else块中)
所以我的问题有点像:是否已经有一个实现以标准的方式实现了这一点,因此任何检查NAN的人都将始终运行相同的代码并获得相同的结果?或者常用的方法是定义自己在链接问题中提供的检查
numpy、math或unittest库中是否存在类似的功能?我认为在unittest中使用
assertNan
函数非常有用,因为对于非float
数据类型,无论哪种方式,我都不会使用和逻辑子句的计算顺序(和跳过)的隐式特性。即,如果第一个操作数为False
,则不计算第二部分:
assertTrue(type(nan_value) is float and math.isnan(nan_value))
在上面的代码中,如果nan\u值
的类型不是float
,则和子句是False
,因此数学。不计算isnan(nan\u值)
,并且不生成类型错误