Questo è il comando py.test che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
pytest - utilizzo di pytest
CHIAMATA PY.TEST ATTRAVERSO PITONE -M PY.TEST
Novità nella versione 2.0.
Se usi Python-2.5 o successivo puoi invocare testing tramite l'interprete Python da
la riga di comando:
python -m pytest [...]
Questo equivale a invocare lo script della riga di comando py.test [...] direttamente.
COME AIUTO ON VERSIONE, OPZIONE NOMI, AMBIENTE VARIABILI
py.test --version # mostra da dove è stato importato pytest
py.test --fixtures # mostra gli argomenti della funzione incorporata disponibili
py.test -h | --help # mostra l'aiuto sulla riga di comando e le opzioni del file di configurazione
ARRESTO DOPO IL PRIMO (O N) GUASTI
Per interrompere il processo di test dopo i primi (N) errori:
py.test -x # stop dopo il primo errore
py.test --maxfail=2 # si ferma dopo due fallimenti
SPECIFICANDO PROVE / SELEZIONARE PROVE
Diverse opzioni di esecuzione del test:
py.test test_mod.py # esegue i test nel modulo
py.test somepath # esegue tutti i test sotto somepath
py.test -k stringexpr # esegue solo test con nomi che corrispondono a
# "espressione stringa", es. "MyClass and not method"
# selezionerà TestMyClass.test_something
# ma non TestMyClass.test_method_simple
py.test test_mod.py::test_func # esegue solo test che corrispondono all'"ID nodo",
# ad es. "test_mod.py::test_func" selezionerà
# solo test_func in test_mod.py
py.test test_mod.py::TestClass::test_method # esegue un singolo metodo in
# una sola classe
Importa 'pkg' e usa la sua posizione nel filesystem per trovare ed eseguire i test:
py.test --pyargs pkg # esegue tutti i test trovati sotto la directory di pypkg
MODIFICA PITONE RINTRACCIARE STAMPA
Esempi per modificare la stampa traceback:
py.test --showlocals # mostra le variabili locali nei traceback
py.test -l # mostra le variabili locali (scorciatoia)
py.test --tb=long # la formattazione informativa predefinita del traceback
py.test --tb=native # la formattazione della libreria standard di Python
py.test --tb=short # un formato di traceback più breve
py.test --tb=line # solo una riga per errore
CADERE A PDB (PITONE DEBUGGER) ON GUASTI
Python viene fornito con un debugger Python integrato chiamato PDB. pitest permette di cadere in
, il PDB prompt tramite un'opzione della riga di comando:
py.test --pdb
Questo invocherà il debugger Python su ogni errore. Spesso potresti voler solo fare
questo per il primo test fallito per capire una certa situazione di fallimento:
py.test -x --pdb # passa a PDB al primo errore, quindi termina la sessione di test
py.test --pdb --maxfail=3 # passa a PDB per i primi tre errori
Si noti che in caso di errore le informazioni sull'eccezione vengono memorizzate su sys.ultimo_valore,
sys.ultimo_tipo che a sys.last_traceback. Nell'uso interattivo, questo consente di immergersi in
debug post-mortem con qualsiasi strumento di debug. Si può anche accedere manualmente all'eccezione
informazioni, ad esempio:
>>> sistema di importazione
>>> sys.last_traceback.tb_lineno
42
>>> sys.last_value
AssertionError('asser risultato == "ok"',)
IMPOSTAZIONE A PUNTO DI ROTTURA / AKA SET_TRACE()
Se vuoi impostare un punto di interruzione e inserire il pdb.set_trace() puoi usare un aiutante:
importa pytest
def funzione_prova():
...
pytest.set_trace() # invoca il debugger e la traccia PDB
Prima della versione 2.0.0 di pytest potevi solo entrare PDB traccia se hai disabilitato l'acquisizione
sulla riga di comando tramite py.test -s. Nelle versioni successive, pytest disabilita automaticamente il suo
cattura dell'output quando entri PDB tracciamento:
· L'acquisizione dell'output in altri test non è interessata.
· Qualsiasi output di test precedente che è già stato acquisito e verrà elaborato come tale.
· Qualsiasi output successivo prodotto all'interno dello stesso test non verrà acquisito e verrà invece ottenuto
inviato direttamente a sys.stdout. Nota che questo vale anche per l'output di test che si verifica
dopo essere uscito dall'interattivo PDB sessione di tracciamento e continuare con il test regolare
eseguire.
Dalla versione 2.4.0 di pytest puoi anche usare il Python nativo importare pdb;pdb.set_trace()
chiama per entrare PDB tracciamento senza dover usare il pytest.set_trace() involucro o
disabilita esplicitamente l'acquisizione dell'output di pytest tramite py.test -s.
PROFILAZIONE TEST ESECUZIONE DURATA
Per ottenere un elenco delle 10 durate di test più lente:
py.test --durations=10
CREARE JUNITXML FORMATO FILE
Per creare file di risultati che possono essere letti da Hudson o altro Integrazione continua
server, usa questa invocazione:
py.test --junitxml=percorso
per creare un file XML su sentiero.
record_xml_proprietà
Novità nella versione 2.8.
Se desideri registrare informazioni aggiuntive per un test, puoi utilizzare il record_xml_proprietà
apparecchio:
def funzione_test(record_xml_property):
record_xml_property("chiave_esempio", 1)
affermare 0
Questo aggiungerà una proprietà extra example_key="1" al generato test case etichetta:
ATTENZIONE:
Questa è una funzionalità sperimentale e la sua interfaccia potrebbe essere sostituita da qualcosa di più
potente e generale nelle versioni future. La funzionalità di per sé sarà mantenuta,
tuttavia.
Attualmente non funziona se utilizzato con il pytest-xdist .
Inoltre, tieni presente che l'utilizzo di questa funzione interromperà qualsiasi verifica dello schema. Questo
potrebbe essere un problema se utilizzato con alcuni server CI.
CREARE LOG DEI RISULTATI FORMATO FILE
Per creare file di risultati leggibili da una macchina in testo normale è possibile emettere:
py.test --resultlog=percorso
e guarda il contenuto su sentiero Posizione. Tali file sono utilizzati ad esempio dal PyPy-test
pagina web per mostrare i risultati dei test su diverse revisioni.
INVIO TEST REPORT A ONLINE PASTELLO SERVIZIO
Creazione a URL per ogni test fallimento:
py.test --pastebin=fallito
Questo invierà le informazioni sull'esecuzione del test a un servizio Incolla remoto e fornirà un URL per ciascuno
fallimento. Puoi selezionare i test come al solito o aggiungere per esempio -x se vuoi inviarne solo uno
particolare fallimento.
Creazione a URL per a tutto test Sessione ceppo:
py.test --pastebin=tutto
Attualmente solo incollando al http://bpaste.net servizio è implementato.
DISABILITAZIONE PLUGINS
Per disabilitare il caricamento di plug-in specifici al momento dell'invocazione, utilizzare il pulsante -p opzione insieme a
il prefisso no:.
Esempio: disabilitare il caricamento del plugin dottore, che è responsabile dell'esecuzione di doctest
test da file di testo, invoca py.test in questo modo:
py.test -p no:doctest
CHIAMATA PY.TEST DA PITONE CODICE
Novità nella versione 2.0.
Puoi invocare pitest direttamente dal codice Python:
pytest.main()
questo si comporta come se si chiamasse "py.test" dalla riga di comando. Non aumenterà
SystemExit ma restituisci invece l'exitcode. Puoi passare opzioni e argomenti:
pytest.main(['-x', 'mytestdir'])
oppure passa una stringa:
pytest.main("-x mytestdir")
Puoi specificare plugin aggiuntivi per pytest.main:
# contenuto di myinvoke.py
importa pytest
classe MyPlugin:
def pytest_sessionfinish(self):
print("*** fine report esecuzione test")
pytest.main("-qq", plugins=[MyPlugin()])
Eseguirlo mostrerà che Il mio plug-in è stato aggiunto e il suo hook è stato invocato:
$ python mioinvoke.py
*** fine dei rapporti di prova
Usa py.test online utilizzando i servizi onworks.net