2016-12-04 6 views
0

Ich bin ein wenig neu bei Python, und aus irgendeinem Grund kann ich mich nicht um etwas kümmern.Importieren und Ausführen einer Datei

in der Befehlszeile ich diesen

python3 myfile.py

laufen und es funktioniert, am Ende der Datei ist das, was meine Klasse läuft, wird das Bit, das die Klasse läuft unter zeigen (ich habe enthalten nur ein bisschen den Abschnitt, der Rest

if __name__ == "__main__": 
    dir = os.getcwd() 
    reportoutputpath="reports" 
    reportfilename=casedetails['hcname'] + ".html" 
    ...... 

nennt Was ich tun möchte, ist die vollständige Datei von meinem Code ausführen, habe ich versucht, diese

pathforidefiles="/home/ubuntu/idefiles" 
sys.path.append(pathforidefiles) 
module = __import__("clean-Fern_Britton_Testcase_01") 

Dies scheint die Datei zu lesen (Ich habe eine Druckzeile ganz oben und das scheint zu funktionieren, aber nichts wird tatsächlich ausgeführt. Ich bin mir sicher, dass ich etwas Grundlegendes über die Funktionsweise von Python verpasse, aber ich bin etwas verloren.

Edit Ich denke, ich könnte über die falsche Art und Weise gehen, und denke, dass meine Frage sein könnte. Wie bewege ich mich, was im Hauptabschnitt der Datei ist für mich in die Datei importiert, die den Import von

die Datei importiert werden soll, zu tun ist, wie dies

class Examplecase01(unittest.TestCase): 
def setUp(self): 
    self.driver = webdriver.Chrome() 
    self.driver.implicitly_wait(30) 
    self.base_url = "http://example.com/" 
    self.verificationErrors = [] 
    self.accept_next_alert = True 

def test_fern_britton_testcase01(self): 
    driver = self.driver 
    .... 

if __name__ == "__main__": 
    dir = os.getcwd() 
    reportoutputpath="reports" 
    reportfilename=casedetails['hcname'] + ".html" 
    outfile = open(dir + "/" + reportoutputpath + "/" + reportfilename, "w") 
    loader = unittest.TestLoader() 
    suite = unittest.TestSuite((
    loader.loadTestsFromTestCase(FernBrittonTestcase01))) 
    runner = HTMLTestRunner(stream=outfile, 
    verbosity=2, 
    title=casedetails['hcname'], 
    description=casedetails['hcdescription']) 
    t = unittest.main(exit=False) 
    print (t.result) 

dann in der Datei, die zu tun ist der einführende

mymodule=importlib.import_module('cleantest') 
#code as above 
t = unittest.mymodule(exit=False) #to replace t = unittest.main(exit=False) 

der Fehler ich erhalte, ist: Modul ‚Unittest‘ kein Attribut ‚mymodule‘ So

hat, was ich meinen Code tun müssen, um (das in Haupt war) zu Arbeit meiner Meinung nach, die den Import macht?

+0

Wenn ich Sie richtig verstehe, Sie wollen Der 'if __name__ == '__main __'' Teil wird ausgeführt, wenn Sie die Datei importieren, richtig? – Leva7

+0

Das ist es. Die Datei scheint auf der Kommandozeile einwandfrei zu funktionieren. – mozman2

+0

Mögliches Duplikat von [Was bedeutet \ 'if \ _ \ _ name \ _ \ _ ==" \ _ \ _ main \ _ \ _ ": \'?] (Http://stackoverflow.com/questions/419163/what-does-if-name-main-do) – Leva7

Antwort

0

Nach einigem Nachdenken über das, was ich eigentlich machen wollte, ist es das, was ich erfunden habe (es funktioniert). Ich bin nur wirklich daran interessiert, diese von der Website in Laufen, nicht von der Kommandozeile

loadfile="my-py-file-that-was-created-and-exported-from-the-IDE" 
sys.path.append("directory-of-where-my-test-case-is") 
mymodule=importlib.import_module(loadfile) 

print(mymodule.casedetails['hcversion']) #I can access values in a dict on the imported file 

#the below then gets the test case from the imported file 
suite = unittest.TestSuite((loader.loadTestsFromTestCase(mymodule.Testcase01))) 

In der Ansicht, dass die Arbeit der Fall ist, sowie den obigen Code, ich habe auch die meisten der Code, der in der war Hauptteil des ursprünglichen Testfall

ich habe andere Fragen \ Fragen, aber diese gelöst

Dank

Grant-

Verwandte Themen