pytest:按版本配置警告

时间:2017-05-25 19:35:03

标签: python-2.7 pytest

使用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的理解,这似乎不可能......但希望有人可能有办法。

2 个答案:

答案 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替换为以下之一:

Actions