Ich verwende pytest, um Python-Modelle für eingebettete Systeme zu testen. Die zu testenden Funktionen variieren je nach Plattform. (Ich verwende 'Plattform' in diesem Zusammenhang, um einen eingebetteten Systemtyp zu meinen, nicht einen Betriebssystemtyp).Unterstützt pytest "Standard" -Markierungen?
Die einfachste Art, meine Tests zu organisieren, wäre, sie den Verzeichnissen auf der Basis des Plattformtyps zuzuordnen.
/platform1
/platform2
/etc.
pytest/Plattform1
Diese schnell hart geworden, so viele Funktionen zu unterstützen überlappen über Plattformen hinweg. Seitdem habe ich meine Tests in ein einziges Verzeichnis verschoben, mit Tests für jeden Funktionsbereich, der einem einzelnen Dateinamen zugewiesen wurde (zum Beispiel test_functionalityA.py). Ich benutze dann Pytest-Marker, um anzuzeigen, welche Tests innerhalb einer Datei für eine bestimmte Plattform gelten.
@pytest.mark.all_platforms
def test_some_functionalityA1():
...
@pytest.mark.platform1
@pytest.mark.platform2
def test_some_functionlityA2():
...
Während ich würde Liebe zu ‚conftest‘ zu erhalten, um automatisch den Plattformtyp zu erkennen und nur die entsprechenden Tests laufen, habe ich finde mich zu spezifizieren, welche auf der Kommandozeile ausgeführt werden testen.
pytest -m "(Plattform1 oder all_platforms)"
Die Frage: (endlich!)
Gibt es eine Möglichkeit, Dinge zu vereinfachen und haben pytest alle nicht gekennzeichneten Tests standardmäßig ausgeführt und zusätzlich alle Tests bestanden über '-m' in der Befehlszeile?
Zum Beispiel: pytest -m "Plattform1"
würde Tests laufen markiert @ pytest.mark.platform1 sowie alle Tests @ pytest.mark.all_platforms markiert oder sogar alle Tests ohne @ pytest.mark überhaupt?
Angesichts der großen Menge an gemeinsam genutzten Funktionen wäre es sehr hilfreich, die Zeile @ pytest.mark.all_platforms zu löschen.
Arbeitete wie ein Charme. Danke Holger. –
nur, damit andere wissen, die Quelle für diese Antwort ist von https://pytest.org/latest/example/markers.html#marking-platform-specific-tests-with-pytest Sie können mehr Beispiele dort finden. –