使用pytest 3.1
,我正在编写一个用于python 2.7和3.4+支持的库。使用python 3.4+,我在运行测试时会从底层库中获取各种ResourceWarning
,我会配置我的pytest.ini
文件来忽略它们。对于Python 3,我可以添加add:
filterwarnings =
ignore::ResourceWarning
但是,我在Python 2.7上遇到异常,因为这是一个无法识别的警告。有没有办法配置pytest来检测是否支持警告?根据我对pytest docs的理解,这似乎不可能......但希望有人可能有办法。
答案 0 :(得分:1)
所以我不确定这是一个干净/可接受的答案,但是根据@Mad Physicist的想法,我尝试将其放在tests
模块的__init__.py
文件中:
import sys
import warnings
if sys.version_info >= (3,2):
warnings.filterwarnings("ignore", category=ResourceWarning)
不幸的是,我没有做任何事情,我认为是因为pytest
issue。基本上pytest 3.1
会覆盖现有的警告配置并默认显示所有警告。
我已经用addopts = -p no:warnings
选项禁用pytest-warnings
,但希望有更好的方法......
答案 1 :(得分:0)
您可以尝试使用以下功能轻松抑制任何类型的警告:
def warnconfig(action='default'):
import warnings
if action == 'default':
warnings.filterwarnings("default")
elif action == 'error':
warnings.filterwarnings("error")
elif action == 'ignore':
warnings.filterwarnings("ignore")
elif action == 'always':
warnings.filterwarnings("always")
elif action == 'module':
warnings.filterwarnings("module")
elif action == 'once':
warnings.filterwarnings("once")
要使用它,请键入warnconfig(action)
并将action
替换为以下之一: