2016-01-16 8 views
8

Come testare un singolo file in pytest? Sono riuscito a trovare solo le opzioni ignora e nessuna opzione "prova solo questo file" nei documenti.Come testare un singolo file sotto pytest

Preferibilmente questo funzionerebbe sulla riga di comando anziché su setup.cfg, poiché mi piacerebbe eseguire diversi test di file nell'ide. L'intera suite impiega troppo tempo.

risposta

9

semplicemente eseguire py.test con il percorso del file

qualcosa come

py.test tests/unit/some_test_file.py

+0

Ok, questo sembra essere quello PyCharm sta facendo ma è ancora in esecuzione l'intera suite. L'esecuzione di py.test sulla riga di comando sta dando segfault per qualche motivo. Suppongo che questo non rientri nella portata della domanda originale, quindi accetterò la tua risposta se riuscirò a farlo funzionare. – simonzack

+1

Apparentemente 'addopts' in setup.cfg sta dando problemi se il percorso viene aggiunto lì. – simonzack

+0

@simonzack Immagino che vogliate eseguire un singolo test case su più test case presenti nel file. Prova questo: py.test test_basic.py -k test_first qui test_first è un caso di test presente nel mio file test_basic.py. –

7

Questo è abbastanza semplice:

$ pytest -v /path/to/test_file.py 

La bandiera -v è quello di aumentare la verbosità. Se si desidera eseguire un test specifico all'interno di quel file:

$ pytest -v /path/to/test_file.py::test_name 

Se si desidera eseguire test che nomi seguono un picchiettio è possibile utilizzare:

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py 

Hai anche la possibilità di marcatura test, quindi puoi utilizzare il flag -m per eseguire un sottoinsieme di test contrassegnati.

test_file.py

def test_number_one(): 
    """Docstring""" 
    assert 1 == 1 


@pytest.mark.run_these_please 
def test_number_two(): 
    """Docstring""" 
    assert [1] == [1] 

Per eseguire il test contrassegnati con run_these_please:

$ pytest -v -m run_these_please /path/to/test_file.py 
+0

Per qualche motivo, '-k' e' percorso/a/test.py :: test_method' NON FUNZIONANO per me. –

+0

Ho ricontrollato e '-k' ora funziona –

+0

per' path/to/test.py :: test_method', ho ricevuto l'errore > ERRORE: non trovato:/home/namgivu/NN/code/myproject/test/models/test_bill.py :: test_generate_for_today_normal_cycle (nessun nome '/home/namgivu/NN/code/myproject/tests/models/test_bill.py::test_generate_for_today_normal_cycle' in nessuno dei [test/modelli di ]) –