Chciałbym dodać kilka rzeczy do tego, co unittest.TestCase
robi klasa po zainicjowaniu, ale nie wiem, jak to zrobić.
Teraz robię to:
#filename test.py
class TestingClass(unittest.TestCase):
def __init__(self):
self.gen_stubs()
def gen_stubs(self):
# Create a couple of tempfiles/dirs etc etc.
self.tempdir = tempfile.mkdtemp()
# more stuff here
Chciałbym, aby wszystkie kody pośredniczące były generowane tylko raz dla całego zestawu testów. Nie mogę używać, setUpClass()
ponieważ pracuję na Pythonie 2.4 (nie udało mi się też uzyskać tego działającego na Pythonie 2.7).
Co ja tu robię źle?
Otrzymuję ten błąd:
`TypeError: __init__() takes 1 argument (2 given)`
... i inne błędy, gdy przenoszę cały kod pośredniczący, __init__
gdy uruchamiam go za pomocą polecenia python -m unittest -v test
.
python
unit-testing
ffledgling
źródło
źródło
Odpowiedzi:
Spróbuj tego:
Zastępujesz wartości
TestCase
's__init__
, więc możesz chcieć, aby klasa bazowa obsługiwała argumenty za Ciebie.źródło
setUp
niż zastępować__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
zamiastsuper(TestingClass, self).__init__(*args, **kwargs)
Chciałem tylko dodać kilka wyjaśnień dotyczących zastępowania funkcji inicjującej
Funkcja zostanie wywołana przed każdą metodą w klasie testowej. Zwróć uwagę, że jeśli chcesz dodać kilka kosztownych obliczeń, które należy wykonać raz przed uruchomieniem wszystkich metod testowych, użyj metody klasy SetUpClass
Ta funkcja zostanie wywołana raz przed wszystkimi metodami testowymi klasy. Zobacz
setUp
metodę, która jest wywoływana przed każdą metodą testową.źródło
Zainstaluj unittest2 i użyj unittest tego pakietu.
a następnie użyj klasy setupModule / tearDownModule lub setupClass / tearDown dla specjalnej logiki inicjalizacji
Więcej informacji: http://www.voidspace.org.uk/python/articles/unittest2.shtml
Najprawdopodobniej tworzysz test integracji bardziej niż niezbyt dobry. Wybierz dobrą nazwę dla testów, aby je rozróżnić lub umieść w innym module kontenera.
źródło