2016-03-21 8 views
-1

Ich versuche, jede Methode in einer Klasse von einem anderen Modul zu testen. Also hier ist die Klasse.Wie Klassenmethoden von außerhalb der Klasse in Python zu testen?

#newmodule 

class test: 
    def atest(a,b): 
     return a 

    def btest(a,b): 
     return b 

und in dem anderen Modul, ich versuche zu tun:

import unittest 
import newmodule 
test.atest(5,4).assert not errors 
test.atest(7,9).assert not errors 

Anmerkung: Ich bin sicher, dass alle Arten von Fehlern gibt es hier, aber ich dies nur verspottet als Beispiel auf. Die Hauptfrage, die ich hier habe, ist, wie man neues Modul erfolgreich importiert und jede METHODE prüft. Ich vermute, dass es Komplikationen beim Versuch gibt, Methoden außerhalb der Klasse zu testen, anstatt nur Funktionen zu testen.

Ich bin schon versagt rechts von der Fledermaus, weil ich erhalte:

ImportError: no module named newmodule 

obwohl sie im selben Verzeichnis befinden.

Wie importiere ich dieses Modul erfolgreich und wenn ja, bin ich in der Lage, die Methoden von außerhalb der Klasse zu testen?

+0

Es sollte 'newmodule.py', nicht' newmodule' benannt werden. Außerdem sollten Methoden entweder das "self" -Argument nehmen, die '@ classmethod' und das' cls'-Argument oder den '@ staticmethod'-Dekorator haben. – zondo

Antwort

0

"obwohl sie sich im selben Verzeichnis befinden." - es ist nicht, ob sie im selben Verzeichnis sind, ob newmodule im aktuellen Arbeitsverzeichnis ist. Wenn Sie Tests aus einem anderen Verzeichnis ausführen möchten, können Sie Ihr Skript-Verzeichnis sys.path

import os 
import sys 
sys.path.insert(0, os.path.dirname(__file__)) 
import unittest 
import newmodule 

dieser schwer Codes hinzufügen, die Version des Moduls Sie Test Test gehen, so dass Sie sich entscheiden müssen, ob, dass Ihre Ziele passt . Alternativ können Sie die Umgebungsvariable PYTHONPATH außerhalb Ihres Testskripts für mehr Flexibilität festlegen.

Verwandte Themen