2016-05-20 10 views
12

Ho cercato di eseguire test di unità usando pytest in python. Avevo scritto un modulo con una classe e alcuni metodi all'interno di quella classe. Ho scritto un test unitario per questo modulo (con una semplice asser statement per verificare l'uguaglianza delle liste) dove prima istanziato la classe con una lista. Quindi invoco un metodo su quell'oggetto (dalla classe). Sia lo test.py sia lo script da testare si trovano nella stessa cartella. Quando eseguo pytest su di esso, ricevo "raccolto 0 articoli".pytest esce senza errori ma con "raccolto 0 articoli"

Sono nuovo a pytest, ma sono in grado di eseguire correttamente gli esempi. Cosa mi manca qui?

esecuzione Python versione 3.5.1 e la versione 2.8.1 pytest su Windows 7.

Il mio codice test.py:

from sort_algos import Sorts 

def integer_sort_test(): 
    myobject1 = Sorts([-100,10,-10]) 
    assert myobject1.merge_sort() == [-101,-100,10] 

sort_algos.py è un modulo che contiene Ordinamenti di classe. merge_sort è un metodo in Sorts.

+0

Si prega di inviare un [mcve]. Cosa ti aspetteresti di conseguenza se metti un file '.py' vuoto? – Zulan

+0

Memoria casuale - qualcosa su ".py" viene saltato se è eseguibile - vedi se lo è e lo cambia in non eseguibile, o vedi se "pytest" ha un'opzione "include eseguibile"? – dwanderson

+0

@ Zulan, aggiunto codice di esempio al mio post –

risposta

24

pytest esegue il test in base a una convenzione di denominazione. Per impostazione predefinita, qualsiasi file che deve contenere test deve essere denominato a partire da test_ e qualsiasi funzione in un file che deve essere considerata come un test deve anche iniziare con test_.

Se si rinomina il file di test su test_sorts.py e si rinomina la funzione di esempio fornita sopra come test_integer_sort, si scoprirà che viene automaticamente raccolta ed eseguita.

Questo test di raccolta comportamento can be changed per soddisfare i tuoi desideri. Per modificarlo sarà necessario conoscere lo configuration in pytest.

+0

grazie mille! Sì, ha funzionato. OMG, non l'ho mai capito! –

+0

Contento di essere stato in grado di aiutare. Ti dispiacerebbe contrassegnare questo come la risposta corretta? Grazie! – cewing

+0

Ora posso, e fatto! –