Verwenden Sie pytest.mark, um Tests zu markieren (markieren), die Sie normalerweise nicht ausführen. Stellen Sie in pytest.ini ein, dass der markierte Test nicht ausgeführt wird.
some_test.py:
import pytest
def test_something():
...
def test_another():
...
@pytest.mark.performance
def test_performance():
...
pytest.ini:
[pytest]
...
addopts = -m "not performance"
Wenn dies ausgeführt wird, werden standardmäßig keine Tests ausgeführt, die als Leistung gekennzeichnet sind.
> pipenv run pytest -v
========================================= test session starts =========================================
(Unterlassung)
collected 3 items / 1 deselected / 2 selected
test/some_test.py::test_something PASSED
test/some_test.py::test_another PASSED
Verwenden Sie das Argument -m in der Befehlszeile, um den markierten Test (nur) auszuführen.
> pipenv run pytest -v -m performance
========================================= test session starts =========================================
(Unterlassung)
collected 3 items / 2 deselected / 1 selected
test/some_test.py::test_perfomance PASSED
Beachten Sie, dass selbst wenn Sie einzelne Testdateien oder Methoden direkt über die Befehlszeile angeben (Knoten-ID-Angabe), diese ignoriert werden, sofern nicht die Option -m hinzugefügt wird.
Sie können in @ pytest.mark einen beliebigen Namen angeben. Wenn Sie hier also einen Tippfehler machen, wird der Test niemals ausgeführt. Schreiben Sie als vorbeugende Maßnahme Markierungen in pytest.ini und geben Sie --strict in addopts an.
pytest.ini:
[pytest]
...
addopts = -m "not performance" --strict
markers =
performance: performance tests
Wenn Sie es falsch markieren, wird zur Laufzeit ein Fehler angezeigt.
> pipenv run pytest -v
========================================= test session starts =========================================
(Unterlassung)
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 ===========================================
Wenn Sie verschiedene Markierungen verwenden möchten, kann es zweckmäßig sein, einen Alias in der Befehlszeile (Shell) festzulegen. Ergänzung funktioniert auch.
% 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