在对Python模块进行单元测试时,我遇到了一个奇怪的错误:

the的构建正常通过,但是其中之一无法从标准isclose库导入math

该错误再现如下:

==================================== ERRORS ====================================
______________________ ERROR collecting tests/test_yau.py ______________________
ImportError while importing test module '/home/travis/build/Benjamin-Lee/squiggle/tests/test_yau.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_yau.py:5: in <module>
    from math import isclose
E   ImportError: cannot import name 'isclose'
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.29 seconds ============================
The command "pytest --cov=squiggle" exited with 2.


在同一目录中(或在我的程序包中)没有名为math.py的文件。是什么原因造成的?

多次重新启动构建并不能解决此错误,并且仅在Python 3.4中显示。

完整的日志可通过here访问。

最佳答案

pytest具有功能approx用于测试两个数字的近似相等性,可用于任何python版本。断言

assert math.isclose(a, b, rel_tol=rt, abs_tol=at)


因此可以替换为

assert a == pytest.approx(b, rel=rt, abs=at)

07-24 09:52
查看更多