2013-06-07 13 views
13

Po utworzeniu unittest.TestCase można zdefiniować funkcję setUp(), która będzie uruchamiana przed każdym testem w tym przypadku testowym. Czy można pominąć setUp() dla pojedynczego testu?Czy można pominąć setUp() dla określonego testu w unittest Pythona?

Możliwe, że pomijanie setUp() dla danego testu nie jest dobrą praktyką. Jestem całkiem nowy w testowaniu jednostkowym i wszelkie sugestie dotyczące tego tematu są mile widziane.

+0

Przykładowy przypadek użycia: testuję funkcjonalnie aplikację korzystającą z zewnętrznego interfejsu API. Niemal każda metoda wymaga 'setUp()' do uwierzytelnienia się z serwerem, chyba że testowałem samą funkcję 'login()'. –

+0

Powiązane na [softwareengineering.se]: [* Czy możliwe jest skonfigurowanie i oderwanie metod uruchamianych tylko dla określonych zmian? *] (Https://softwareengineering.stackexchange.com/q/232243/168744) –

Odpowiedz

8

Z docs kopalni (kursywa):

unittest.TestCase.setUp()

metoda zwana przygotowanie oprzyrządowania. Jest to wywoływane bezpośrednio przed wywołaniem metody testowania; każdy wyjątek podniesiony przez ta metoda będzie traktowana jako błąd, a nie błąd testu. Domyślna implementacja nic nie robi.

Więc jeśli nie potrzebujesz żadnych ustawień, nie zastępuj unittest.TestCase.setUp.

Jeśli jednak jedna z metod test_* nie wymaga konfiguracji, a inne nie, zalecam umieszczenie jej w osobnej klasie.

+1

wierzę w @ 7hi4g0 ma 5 testów, a spośród tych 5 testów nie chce, aby setup działał na jednym z nich. ZAMIAST pisania dwóch oddzielnych testów, jeden z konfiguracją bez – TehTris

+0

@TehTris: W takim przypadku powinien to być osobny przypadek testowy i nie powinien być mieszany z innymi. –

+0

Zgadzam się w 100%, ale jestem pewien, że istnieje co najmniej jeden uzasadniony powód, aby to było możliwe. – TehTris

6

W setUp(), self._testMethodName zawiera nazwę testu, który zostanie wykonany. Prawdopodobnie lepiej jest umieścić test w innej klasie lub coś podobnego, ale jest tam.

Powiązane problemy