web-dev-qa-db-fra.com

PytestUnknownMarkWarning: Inconnu pytest.mark.xxx - est-ce une faute de frappe?

J'ai un fichier appelé test.py avec le code suivant:

import pytest

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

class TestClass:
    def test_method(self):
        pass

pytest -s test.py a réussi mais a donné les avertissements suivants:

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 ===================

Environnement: Python 3.7.3, pytest 5.2.4, anaconda3

Quelle est la meilleure façon de se débarrasser du message d'avertissement?

3
Jonathan L

La réponse de @ gold_cy fonctionne. Si vous avez trop de marqueurs personnalisés à enregistrer dans pytest.ini, une autre méthode consiste à utiliser la configuration suivante dans pytest.ini:

[pytest]
filterwarnings =
    ignore::UserWarning

ou en général, utilisez ce qui suit:

[pytest]
filterwarnings =
    error
    ignore::UserWarning

la configuration ci-dessus ignorera tous les avertissements utilisateur, mais transformera tous les autres avertissements en erreurs. Voir plus à Warnings Capture

test.py (mis à jour avec deux marqueurs personnalisés)

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")

Utilisez les commandes suivantes pour exécuter les tests souhaités:

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