2016-08-31 15 views
8

Posiadam kod produktywny, który tworzy pliki konfiguracyjne w moim folderze $HOME i uruchamiam moje testy w izolowanym środowisku, które łatam $HOME w conftest.py. Nadal nie jestem pewien, czy to działa w ogóle, a może niewygodne funkcje testu pisemnego mogą wybuchnąć.Wstępna i końcowa kontrola przy uruchamianiu zestawu testów testu Pytest

Aby zapewnić poprawność mojego zestawu testów, chciałbym przeprowadzić wstępne sprawdzenie odpowiednich plików w $HOME i chciałbym przeprowadzić ostateczną kontrolę po uruchomieniu zestawu testów.

Jak mogę to osiągnąć przy użyciu "oficjalnych" środków pytest? Mam brudny hack, który działa, ale psuje się raportowanie.

Mój zestaw testów jest poprawny, a to pytanie jest z ciekawości, ponieważ chciałbym dowiedzieć się więcej na temat pytest.


Dodatek: To samo pytanie, ale inny przypadek użycia: Chciałbym, aby sprawdzić, czy plugin 3rd-Party spełniają wymagania wersji requierement. Jeśli tak nie jest, chciałbym pokazać komunikat i zatrzymać py.test.

+0

Czy próbowałeś ustawić zmienną środowiskową '$ HOME' podczas wykonywania testu? Instrukcje, jak to zrobić, zmieniają się w różnych systemach operacyjnych. – Av4t4r

+0

Tak, właśnie to robię. Nadal miałem niewłaściwą funkcję testową, która ominęła to i moim zamiarem było zaimplementowanie dodatkowego testu "meta", który zapewnia, że ​​mój zestaw testów sam w sobie jest poprawny. Moje pytanie jest niedorzeczne, aby dowiedzieć się więcej o funkcjach 'pytest'. – rocksportrocker

Odpowiedz

1

Czy rozważałeś napisanie pytestowego urządzenia o zasięgu sesji? Coś jak:

@pytest.fixture(scope="session") 
def global_check(request): 
    assert initial_condition 

    def final_check(request): 
     assert final_condition 

    request.addfinalizer(final_check) 

    return request 

przypadku wszystkich innych urządzeń dziedziczą global_check, następnie initial_condition będzie zapewniał na początku wszystkich przebiegów testowych i final_condition będzie zapewniał pod koniec swoich tras testowych.

+1

Próbowałem czegoś takiego, ale dostałem raport z długą listą nieudanych funkcji testowych zamiast jednej wiadomości + zatrzymania na początku. Rozszerzyłem to podejście o 'autotest = True', więc nie musiałem dziedziczyć z tego urządzenia. – rocksportrocker

+0

Wystarczająco fair. Oto interesujące podejście: http://stackoverflow.com/a/9122053/324449 –

Powiązane problemy