如何使用pytest近似计算小数位上的值?

4

查看文档,默认情况下approx方法会对数字进行3位小数点的评估,但当我比较这个值时,它返回False

pytest.approx(6.495) == 6.49  # False

如何检查一个数字是否在小数位上与另一个数字接近?

1个回答

4
它并没有说默认值是三位小数,而是说它在 1e-6 - 或者 0.000001 的相对容差内。
默认情况下,approx 认为与期望值的相对误差在 1e-6(即一百万分之一)以内的数字是相等的。如果期望值为 0.0,则会产生令人惊讶的结果,因为除了 0.0 本身以外,没有任何数字与 0.0 相对接近。为了更少出现这种情况,approx 还认为与期望值的绝对误差在 1e-12 内的数字是相等的。 rel 参数可用于更改被视为近似相等的值。
>>> pytest.approx(6.495, rel=1e-3) == 6.49
True

1
谢谢,有没有办法在所有测试中添加1e-3,而不需要每次都传递参数? - Rafa Acioly
你可以创建自己的函数,并使用默认值进行调用/装饰该函数。 - MatsLindh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接