导入库的静音Pytest库输出

时间:2017-11-24 01:34:46

标签: python testing typeerror pytest wand

我正在测试一个使用Python Wand的函数。当我使用无效输入测试它时,它会抛出一个BlobError,这是来自Wand库的自定义错误。但是,当我这样做时,似乎在Wand中发生了另一个TypeError,这导致在Pytest结果stdout下出现了一个很大的丑陋的Exception ignored in...错误消息。

我正在检查Pytest是否引发了BlobError,这很好,但我也不能检查它是否引发了TypeError,或者只是将该消息静音。所以这是Pytest测试输出:

================================ test session starts =================================
platform linux -- Python 3.5.2, pytest-3.2.5, py-1.5.2, pluggy-0.4.0
rootdir: /path/to/my/project/tests, inifile:
collected 1 item                                                                                                                              

test_split.py .

============================== 1 passed in 0.14 seconds ==============================
Exception ignored in: <bound method Resource.__del__ of <wand.image.Image: (empty)>>
Traceback (most recent call last):
  File "/my/comp/.local/share/virtualenvs/project-BRze6wfl/lib/python3.5/site-packages/wand/resource.py", line 232, in __del__
    self.destroy()
  File "/my/comp/.local/share/virtualenvs/project-BRze6wfl/lib/python3.5/site-packages/wand/image.py", line 2767, in destroy
    for i in range(0, len(self.sequence)):
TypeError: object of type 'NoneType' has no len()

我的测试很简单:

with pytest.raises(wand.exceptions.BlobError):
        wand_split.split(PDF,TEMP, 260)

所以测试按我想要的方式工作,但是如何处理额外的Wand TypeError?

1 个答案:

答案 0 :(得分:1)

该消息表示__del__doc says内发生了异常:

  

由于调用 del ()方法的不稳定情况,将忽略执行期间发生的异常,并向sys.stderr输出警告。 ...

最有可能的是,这发生在python解释器退出时,据我所知,没有简单的方法可以使用pytest将此消息静音。

但是由于没有回溯线,我猜你正在使用一个有问题的魔杖版本,有人有reported a similar issue on github,你可以尝试升级并报告问题。