unittest - langsam durch wiederholten Aufruf von setUp()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 30. April 2008, 13:28

Hoi,

ich habe mir das nie so klargemacht, aber bei

Code: Alles auswählen

import unittest

class TestClass(unittest.TestCase):
    def setUp(self):
        self.testobject = sometestobject

    def test_X1(self):
        testcode here

    def test_X2(self):
        testcode here
etc.
wird die Funktion setUp bei jedem Aufruf einer Testfunktion aufgerufen. Das war immer unproblematisch, weil es in der Regel wenig Zeit kostet. Jetzt aber möchte ich Platz sparen und daher die Zahl der Testdatensätze nicht zu sehr aufzublähen. Meine Lösung (hielt mich da für clever :D ): Ich lade nur wenige Datensätze in setUp ein und manipuliere diese mit bereits getesteten Funktionen so, daß die so generierten, neuen Datensätze für weitere Tests genügen. Aber das kostet Zeit. Das wäre kein Problem, wenn die Funktionen nur einmal pro Ableitung von unittest.TestCase aufgerufen würden, aber setUp() - und alle dort eingebetteten Funktionen - wird jedes Mal aufgerufen, wenn eine Testfunktion aufgerufen wird. Und so werden meine Tests derartig langsam, daß das Testen wirklich zu lange dauert.

Meine Frage also: Weiß jemand eine Lösung für das Dilemma?

N.B.: Ich versuche schon durch geeignete Aufteilung von Tests in versch. Skripte das Problem zu minimieren. Das macht die Sache a) unübersichtlicher und stößt b) an logische Grenzen: Ich brauche eine gewisse Zahl von Testfunktionen für jede zu testende Funktionen mit den gleichen Datensätzen.

Gruß,
Christian
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 30. April 2008, 13:38

Arrgh, wie doof ... :oops:
Den geschwindigkeitsbestimmenden Schritt kann ich - wenn die Reihenfolge der Ausführung für die Testfunktionen feststeht - in die Testfunktionen auslagern.
Manchmal ärgere ich mich über mich selbst ...
Antworten