Ich bin in einem Projekt, wo wir beginnen, einige massive Code-Basis zu refactoring. Ein Problem, das sofort aufkam, ist, dass jede Datei viele andere Dateien importiert. Wie kann ich das in meinem Komponententest auf elegante Art und Weise vortäuschen, ohne den eigentlichen Code ändern zu müssen, damit ich mit Komponententests beginnen kann?Python, Unit-Testing und Mocking Importe
Als ein Beispiel: Die Datei mit den Funktionen, die ich testen möchte, importiert zehn andere Dateien, die Teil unserer Software und nicht Python Core-Bibliotheken sind.
Ich möchte in der Lage sein, die Komponententests so separat wie möglich zu starten, und jetzt werde ich nur Funktionen testen, die nicht von den Dateien abhängen, die importiert werden.
Danke für alle Antworten.
Ich wusste nicht wirklich, was ich von Anfang an machen wollte, aber jetzt denke ich, dass ich weiß.
Problem war, dass einige Importe nur möglich war, wenn die gesamte Anwendung aufgrund einiger Auto-Magie von Drittanbietern ausgeführt wurde. Also musste ich einige Stubs für diese Module in einem Verzeichnis erstellen, auf das ich mit sys.path hingewiesen habe
Jetzt kann ich die Datei importieren, die die Funktionen enthält, für die ich Tests in meiner Unit-Test-Datei schreiben möchte, ohne sich zu beschweren fehlende Module.
Sie möchten 'try: finally:' in der Methode 'mock_import' hinzufügen, um zu vermeiden, dass das System den Wrapped-Import anstelle des Standard-Imports bei einem Fehler erhält – Yonatan
@Yonatan: Sie haben Recht, danke! Ich habe meinen Code geändert. – DzinX