Ich möchte ein paar Dinge zu dem hinzufügen, was die unittest.TestCase
Klasse nach der Initialisierung tut, aber ich kann nicht herausfinden, wie es geht.
Im Moment mache ich das:
#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
Ich möchte, dass alle Stubs für diesen gesamten Testsatz nur einmal generiert werden. Ich kann es nicht verwenden, setUpClass()
weil ich an Python 2.4 arbeite (ich konnte das auch nicht mit Python 2.7 zum Laufen bringen).
Was mache ich hier falsch?
Ich erhalte diesen Fehler:
`TypeError: __init__() takes 1 argument (2 given)`
... und andere Fehler, wenn ich den gesamten Stub-Code verschiebe, __init__
wenn ich ihn mit dem Befehl ausführe python -m unittest -v test
.
python
unit-testing
flügge
quelle
quelle
Antworten:
Versuche dies:
Sie überschreiben die
TestCase
's__init__
, daher möchten Sie möglicherweise, dass die Basisklasse die Argumente für Sie verarbeitet.quelle
setUp
anstatt es zu überschreiben__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
anstelle vonsuper(TestingClass, self).__init__(*args, **kwargs)
Ich wollte nur einige Erläuterungen zum Überschreiben der Init-Funktion von hinzufügen
Die Funktion wird vor jeder Methode in Ihrer Testklasse aufgerufen. Beachten Sie, dass Sie die SetUpClass- Klassenmethode verwenden , wenn Sie einige teure Berechnungen hinzufügen möchten, die einmal ausgeführt werden sollten, bevor alle Testmethoden ausgeführt werden
Diese Funktion wird vor allen Testmethoden der Klasse einmal aufgerufen . Suchen Sie
setUp
nach einer Methode, die vor jeder Testmethode aufgerufen wird.quelle
Installieren Sie unittest2 und verwenden Sie das unittest dieses Pakets.
Verwenden Sie dann die Klasse setupModule / tearDownModule oder setupClass / tearDown für eine spezielle Initialisierungslogik
Weitere Informationen: http://www.voidspace.org.uk/python/articles/unittest2.shtml
Außerdem erstellen Sie höchstwahrscheinlich mehr einen Integrationstest als einen Test. Wählen Sie einen guten Namen für die Tests, um sie zu unterscheiden, oder fügen Sie ein anderes Containermodul ein.
quelle