2014-04-02 13 views
5

Ho diverse cartelle di prova (pacchetti). Voglio impostare e rimuovere alcuni dati per un pacchetto specifico (cartella).setup/teardown utilizzando conftest in pytest

Il problema è set_up() eseguito prima di eseguire i test case di quella cartella ma dopo aver eseguito tutti i test, tear_down non è in esecuzione. È in esecuzione dopo aver eseguito tutti i test di altri pacchetti (cartelle) anche (dopo l'intera sessione di pytest).

 [conftest.py] 

    @pytest.fixture(scope="session", autouse=True) 
     def set_up(request): 
      '''Test package setup''' 

     def tear_down(): 
      '''Test package teardown''' 

Ogni cartella contiene __init__.py di file che è ovvio.

così come faccio a eseguire il tear_down() solo dopo aver eseguito tutti i casi di test in quella cartella per cui set_up viene eseguito?

per quanto ne so: scope="module" è inutile in questo caso in quanto non desidero impostare e rimuovere per ogni test.

Qualsiasi aiuto sarebbe grande. Grazie

+0

Che tipo di dati stai Impostazione e abbattere? Come ho capito la tua domanda, vuoi qualcosa di simile a un dispositivo con un ambito di "pacchetto", in cui è possibile specificare il pacchetto. È corretto? –

+0

Sì pacchetto fisso. I dati sono fondamentalmente correlati all'inserimento di alcuni valori nel database di cassandra prima di iniziare il test e dopo che tutti i test in quella cartella sono terminati, voglio troncare tutte le tabelle. –

risposta

7

pytest non supporta direttamente infissi livello di pacchetto. Neanche unittest.

Per quanto riguarda i principali framework di test, credo nose is the only one to support package fixtures. Tuttavia, nose2 sta abbandonando il supporto del pacchetto. Vedi nose2 docs.

pytest supporta module, function, class, and method level fixtures per gli apparecchi di stile xUnit.

+0

usando il naso non è una buona idea allora. Lo sapevo, ma ho sollevato questa domanda in caso se ho perso qualcosa. Non c'è una buona soluzione, ma grazie comunque. –