2012-07-20 39 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