web-dev-qa-db-ja.com

PytestUnknownMarkWarning:不明なpytest.mark.xxx-これはタイプミスですか?

次のコードを含むtest.pyというファイルがあります。

import pytest

@pytest.mark.webtest
def test_http_request():
    pass

class TestClass:
    def test_method(self):
        pass

pytest -s test.pyは成功しましたが、次の警告が表示されました:

pytest -s test.py
=============================== test session starts ============================
platform linux -- Python 3.7.3, pytest-5.2.4, py-1.8.0, pluggy-0.13.1
rootdir: /home/user
collected 2 items

test.py ..

=============================== warnings summary ===============================
anaconda3/lib/python3.7/site-packages/_pytest/mark/structures.py:325
  ~/anaconda3/lib/python3.7/site-packages/_pytest/mark/structures.py:325:
    PytestUnknownMarkWarning: Unknown pytest.mark.webtest - is this a typo?  You can register
    custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
    PytestUnknownMarkWarning,

-- Docs: https://docs.pytest.org/en/latest/warnings.html
=============================== 2 passed, 1 warnings in 0.03s ===================

環境:Python 3.7.3、pytest 5.2.4、anaconda3

警告メッセージを取り除く最善の方法は何ですか?

3
Jonathan L

@gold_cyの答えは機能します。 pytest.iniに登録する必要のあるカスタムマーカーが多すぎる場合、別の方法はpytest.iniで次の構成を使用することです。

[pytest]
filterwarnings =
    ignore::UserWarning

または、一般的には、以下を使用します。

[pytest]
filterwarnings =
    error
    ignore::UserWarning

上記の構成では、すべてのユーザー警告は無視されますが、他のすべての警告はエラーに変換されます。詳細は Warnings Capture を参照してください

test.py(2つのカスタムマーカーで更新)

import pytest

@pytest.mark.webtest
def test_http_request():
    print("webtest::test_http_request() called")

class TestClass:
    @pytest.mark.test1
    def test_method(self):
        print("test1::test_method() called")

次のコマンドを使用して、目的のテストを実行します。

pytest -s test.py -m webtest
pytest -s test.py -m test1
1
Jonathan L