--Si vous n'ajoutez pas d'argument à pytest, tous les tests seront exécutés. ――Lorsque vous sélectionnez et exécutez un test de charge, etc., je suis content s'il s'agit d'un simple argument.
Utilisez pytest.mark pour marquer (marquer) les tests que vous n'exécutez pas normalement. Dans pytest.ini, définissez pour ne pas exécuter le test marqué.
some_test.py:
import pytest
def test_something():
...
def test_another():
...
@pytest.mark.performance
def test_performance():
...
pytest.ini:
[pytest]
...
addopts = -m "not performance"
Lorsqu'il est exécuté avec cela, il n'exécute pas par défaut les tests de performance marqués.
> pipenv run pytest -v
========================================= test session starts =========================================
(Omission)
collected 3 items / 1 deselected / 2 selected
test/some_test.py::test_something PASSED
test/some_test.py::test_another PASSED
Pour exécuter le test marqué (uniquement), utilisez l'argument -m sur la ligne de commande.
> pipenv run pytest -v -m performance
========================================= test session starts =========================================
(Omission)
collected 3 items / 2 deselected / 1 selected
test/some_test.py::test_perfomance PASSED
Notez que même lorsque vous spécifiez des fichiers de test individuels ou des méthodes directement à partir de la ligne de commande (spécification de l'ID de nœud), ils seront ignorés sauf si l'option -m est ajoutée.
Vous pouvez spécifier n'importe quel nom dans @ pytest.mark, donc si vous faites une faute de frappe ici, le test ne sera jamais exécuté. Par mesure préventive, écrivez des marqueurs dans pytest.ini et spécifiez --strict dans addopts.
pytest.ini:
[pytest]
...
addopts = -m "not performance" --strict
markers =
performance: performance tests
Si vous ne le marquez pas correctement, vous obtiendrez une erreur au moment de l'exécution.
> pipenv run pytest -v
========================================= test session starts =========================================
(Omission)
collected 0 items / 1 error
=============================================== ERRORS ================================================
_________________________________ ERROR collecting test/some_test.py __________________________________
'peformance' not found in `markers` configuration option
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================== 1 error in 0.12s ===========================================
Si vous souhaitez utiliser des marques différentes, il peut être pratique de définir un alias sur la ligne de commande (shell). La complémentation fonctionne également.
% alias
ppytest='pipenv run pytest'
ppytestperf='pipenv run pytest -m performance'
ppyteste2e='pipenv run pytest -m e2e'
Marking test functions with attributes - pytest documentation
Configuration - pytest documentation
Recommended Posts