Sto usando pytest per testare i modelli python per sistemi embedded. Le funzionalità da testare variano in base alla piattaforma. (Sto usando 'piattaforma' in questo contesto per indicare un tipo di sistema incorporato, non un tipo di sistema operativo).Fa pytest markers "default"?
Il modo più semplice per organizzare i test consiste nell'assegnarli alle directory basate sul tipo di piattaforma.
/platform1
/platform2
/etc.
pytest/PLATFORM1
Questo è diventato rapidamente difficile da sostenere molte caratteristiche si sovrappongono diverse piattaforme. Da allora ho spostato i miei test in una singola directory, con test per ogni area funzionale assegnata a un singolo nome file (test_functionalityA.py, ad esempio). Quindi uso i marcatori pytest per indicare quali test all'interno di un file si applicano a una determinata piattaforma.
@pytest.mark.all_platforms
def test_some_functionalityA1():
...
@pytest.mark.platform1
@pytest.mark.platform2
def test_some_functionlityA2():
...
mentre io avrei amore ottenga 'conftest' di rilevare automaticamente il tipo di piattaforma ed eseguire solo le prove del caso, ho rassegnato a specificare i test da eseguire sulla riga di comando.
pytest -m "(PLATFORM1 o all_platforms)"
la domanda: (! Finalmente)
C'è un modo per semplificare le cose e hanno pytest eseguire tutti i test non marcate di default e inoltre tutti i test superato via '-m' sulla riga di comando?
Ad esempio: pytest -m "PLATFORM1"
correrebbe test contrassegnati @ pytest.mark.platform1 così come tutti i test assegnati @ pytest.mark.all_platforms o anche tutti i test senza @ pytest.mark affatto?
Data la grande quantità di funzionalità condivise, essere in grado di rilasciare la linea @ pytest.mark.all_platforms sarebbe di grande aiuto.
Ha funzionato come un fascino. Grazie Holger. –
solo così altri lo sanno, la fonte di questa risposta è https://pytest.org/latest/example/markers.html#marking-platform-specific-tests-with-pytest qui puoi trovare altri esempi. –