Pytestの内部廃止警告を抑制する方法はありますか?
コンテキスト:テストスイートをnose
からpytest
に移植する難しさを評価したいと考えています。スイートはかなり大きく、nose
- style yield
ベースのテストジェネレーターを頻繁に使用します。
最初にexistingテストがpytestでパスすることを確認してから、テストジェネレーターをparameterized
に変更します。
Pytest 3.0.4で$ pytest path-to-test-folder
を実行するだけで、ページと
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
これらの警告をオフにする方法はありますか?
pytest --help
から:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
pytest -p no:warnings
または、pytest.iniまたはtox.iniに次を追加します。
[pytest]
addopts = -p no:warnings
結果は緑色で表示され、警告は表示されません(もちろんテストが失敗しない限り)。
https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary を参照してください
すべての警告を非表示にするのではなく、関連しない警告だけを非表示にする必要があると思います。この場合、インポートされたpythonモジュールからのdeprectation警告。
警告キャプチャ に関するpytestドキュメントを読んでください:
-Wコマンドラインオプションとfilterwarnings iniオプションはどちらもPython独自の -Wオプション および warnings.simplefilter に基づいているため、Python他の例と高度な使用法のドキュメント。
したがって、Pythonの-W
オプションで警告をフィルタリングできます!
pytest
はフィルターを完全に削除するようです。これは、実行時にこれらのDeprecationWarning
をすべて表示するためであり、Pythonの Default Warning Filters に関するドキュメントには次のように明記されています。
通常のリリースビルドでは、デフォルトの警告フィルターには次のエントリがあります(優先順)。
default::DeprecationWarning:__main__ ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarning
したがって、あなたの場合、DeprecationWarning
のような無視したい警告のタイプをフィルターにかけるには、-W
オプションを指定してpytestコマンドを実行するだけです:
$ pytest path-to-test-folder -W ignore::DeprecationWarning
EDIT: colini のコメントから、モジュールでフィルタリングできます。すべてのsqlalchemyからの非推奨の警告を無視する例:
ignore::DeprecationWarning:sqlalchemy.*:
次に、pytest
の出力にノイズが多すぎるインストール済みモジュールをリストできます。
コマンドラインではなくファイルで使用:
これらのフィルターをpytest.iniファイルにリストすることをお勧めします。
[pytest]
filterwarnings =
ignore::DeprecationWarning
すべての警告を非表示にしたくないので、これをpytest.ini
に入れます
[pytest]
filterwarnings =
ignore::DeprecationWarning