2016-02-12 5 views
8

so che py.test può testare un singolo modulo se faccio:Invoke pytest in pitone per modulo corrente solo

py.test mod1.py 

Oppure, posso richiamare pytest all'interno pitone:

import pytest 
pytest.run(['mod1.py']) 

Can Lo faccio all'interno di python e lo faccio per eseguire il modulo corrente? Immagino di poterlo fare:

import pytest 
import os 
pytest.main([os.path.basename(__file__)]) 

Ma chiedo se questo è il modo più "pitonico" per farlo. Grazie!

+0

Gli esempi che hai mostrato sono per un file, ma la domanda che stai facendo riguarda il modulo. Per favore, cancella cosa vuoi esattamente –

risposta

7

Le tue versioni non consentono di passare argomenti aggiuntivi a pytest (ad esempio, consentire ./test_file.py -v). Ho provato semplicemente

import sys 


if __name__ == '__main__': 
    pytest.main(sys.argv) 

e sembra fare il trucco. sys.argv[0] è il nome dello script (ad esempio __file__, probabilmente come percorso relativo), quindi limita la chiamata allo script e sys.argv[1:] contiene argomenti aggiuntivi passati sulla riga di comando.

Qualsiasi idea migliore è apprezzata!