2013-06-07 3 views
13

Wenn ich eine unittest.TestCase erstellen, kann ich eine setUp() Funktion definieren, die vor jedem Test in diesem Testfall ausgeführt wird. Ist es möglich, die setUp() für einen einzelnen spezifischen Test zu überspringen?Ist es möglich, setUp() für einen bestimmten Test in Pythons Unittest zu überspringen?

Es ist möglich, dass setUp() für einen gegebenen Test zu überspringen nicht eine gute Übung ist. Ich bin ziemlich neu in der Unit-Tests und jeder Vorschlag in Bezug auf das Thema ist willkommen.

+0

Ein Beispiel Anwendungsfall: Ich bin Funktionsprüfung einer Anwendung, die eine externe API verwendet. Fast jede Methode erfordert 'setUp()', um sich mit dem Server zu authentifizieren, außer wenn ich die 'login()' Funktion selbst getestet habe. –

+0

In Bezug auf [Softwareengineering.se]: [* Ist es möglich, Setup-und Abbau-Methoden nur für bestimmte Unittests ausgeführt haben? *] (Https://softwareengineering.stackexchange.com/q/232243/168744) –

Antwort

8

Vom docs (Hervorhebungen von mir):

unittest.TestCase.setUp()

Methode namens der Prüfvorrichtung vorzubereiten. Dies wird unmittelbar vor dem Aufruf der Testmethode aufgerufen; Jede Ausnahme, die durch ausgelöst wird, wird als Fehler und nicht als Testfehler betrachtet. Die Standardimplementierung tut nichts.

Wenn Sie also keine Einrichtung benötigen, überschreiben Sie nicht unittest.TestCase.setUp.

Allerdings, wenn eine Ihrer test_* Methoden nicht die Einrichtung und die anderen tun müssen, würde ich empfehlen, dass in einer separaten Klasse.

+1

ich glaube @ 7hi4g0 hat 5 Tests, und von diesen 5 Tests möchte er nicht, dass das Setup auf einem von ihnen ausgeführt wird. Statt zwei separate Tests zu schreiben, einen mit Setup eins ohne – TehTris

+0

@TehTris: In diesem Fall sollte es ein separater Testfall sein und nicht mit den anderen gemischt werden. –

+0

ich stimme zu 100% zu, aber ich bin mir sicher, dass es mindestens einen legitimen Grund dafür gibt. – TehTris

6

In setUp() enthält self._testMethodName den Namen des Tests, der ausgeführt wird. Es ist wahrscheinlich besser, den Test in eine andere Klasse oder etwas anderes zu legen, aber es ist da drin.

Verwandte Themen