我在pytest中使用filterwarnings时遇到一个奇怪的错误。我正在尝试过滤MDAnalysis上引发的警告。目前我有以下配置。
[tool:pytest]
filterwarnings= always
使用该配置,所有测试都在python 2和3 travis上传递。由于MDAnalysis使用大量警告来通知用户各种事情,因此会导致大量警告。现在要过滤警告以查看除User和一些RuntimeWarning之外的所有内容,我使用以下config。
[tool:pytest]
filterwarnings= all
ignore::UserWarning
ignore:invalid value encountered in.*:RuntimeWarning
现在有些测试仅在python 2 Travis上失败。测试检查是否引发了UserWarning。奇怪的是,这仅适用于少数测试。使用pytest.warns(UserWarning)
的大多数测试仍然可以正常工作。我不明白为什么这只影响python 2上的一些测试。在python 2和python 3上的警告处理方式不同吗?