2012-07-20 74 views
6

我试图用鼻子测试运行我的测试套件时禁止所有sqlalchemy警告。我读Turn off a warning in sqlalchemy在nosetests中关闭sqlalchemy警告

.............................../Users/ca/.pythonbrew/venvs/Python-2.7.3/api/lib/python2.7/site-packages/SQLAlchemy-0.7.5-py2.7-macosx-10.7-x86_64.egg/sqlalchemy/engine/default.py:330: Warning: Field 'random_id' doesn't have a default value 
cursor.execute(statement, parameters) 

我包括这在我的包的__init__.py文件:

def setup_package(): 
    """Setup the test during the whole session. 

    Run by nosetests 
    """ 
    # Suppress all SQLAlchemy warnings 
    warnings.filterwarnings("ignore", category=sa_exc.SAWarning) 

有了正确的进口。我知道它是由nosetests运行,因为我尝试了一些其他提出错误的东西。唯一的是它没有任何影响。警告仍然显示。

有什么想法?

谢谢!

+0

我不相信“默认值”的警告是'SAWarning'类的,而是'Warning'。我自己使用以下内容:'ignore:Field'\ w +'没有默认值:Warning'并且它似乎可以工作 – tutuDajuju 2017-10-11 12:58:25

回答

4

看来,鼻子覆盖任何你设置:

warnings.filterwarnings("ignore") 

但是你可以用一个命令行选项,鼻鼻试验中筛选警告。

$ nosetests --logging-filter=SAWarning 

我发现这仍然可能无法在所有情况下工作。如果是这样的话,你可以尝试:

$ python -W ignore `which nosetests` 
+0

在pytest(newer 3.1)中可以使用'pytest -W '参数pytest或作为pytest.ini中的一个属性;请参阅[docs here](https://docs.pytest.org/en/latest/warnings.html)。 – tutuDajuju 2017-10-11 12:59:20