Używam programu pytest do testowania modeli Pythona dla systemów wbudowanych. Testowane funkcje różnią się w zależności od platformy. (W tym kontekście używam "platformy" w znaczeniu typu systemu wbudowanego, a nie typu OS).Czy pytest obsługuje "domyślne" znaczniki?
Najprostszym sposobem na uporządkowanie moich testów byłoby przydzielenie ich do katalogów w oparciu o typ platformy.
/platform1
/platform2
/etc.
pytest/PLATFORM1
ten szybko stał się trudno obsługiwać jak najwięcej możliwości zachodzą na różnych platformach. Odtąd przeniosłem moje testy do jednego katalogu, z testami dla każdego obszaru funkcjonalnego przypisanego do pojedynczej nazwy pliku (na przykład test_functionalityA.py). Następnie używam znaczników Pytest, aby wskazać, które testy w pliku dotyczą danej platformy.
@pytest.mark.all_platforms
def test_some_functionalityA1():
...
@pytest.mark.platform1
@pytest.mark.platform2
def test_some_functionlityA2():
...
ile bym miłość dostać „conftest” automatycznie wykrywa rodzaj platformy i tylko uruchomić odpowiednie testy, ja pogodziłem się Określanie który testuje uruchomić w wierszu poleceń.
pytest -m „(PLATFORM1 lub all_platforms)”
Pytanie: (! Wreszcie)
Czy istnieje sposób, aby uprościć i mieć pytest uruchomić wszystkie testy nieoznakowanych domyślnie i dodatkowo wszystkie testy przeszły przez "-m" w linii poleceń?
Na przykład: pytest -m "PLATFORM1"
by uruchomić testy oznaczone @ pytest.mark.platform1 jak również wszystkie testy oznaczone @ pytest.mark.all_platforms lub nawet wszystkie testy bez @ pytest.mark w ogóle?
Biorąc pod uwagę dużą liczbę udostępnianych funkcji, bardzo przydatna byłaby możliwość opuszczenia linii @ pitest.mark.all_platforms.
Pracował jak urok. Dzięki, Holger. –
tylko dlatego, że inni wiedzą, źródło tej odpowiedzi pochodzi z https://pytest.org/latest/example/markers.html#marking-platform-specific-tests-with-pytest można znaleźć więcej przykładów tam. –