2017-06-01 2 views
1

Ich habe ein Problem, bei dem alle meine Tests ordnungsgemäß ausgeführt werden, wenn sie einzeln ausgeführt werden. Wenn ich jedoch versuche, alle Tests in der Datei auszuführen, erhalte ich die Fehlermeldung: Versuch, den Befehl auszuführen, ohne eine Verbindung herzustellen. Ich weiß, dass die Tests funktionieren, weil sie einzeln ausgeführt werden, aber ich muss in der Lage sein, alle Tests auszuführen, ohne sie einzeln auszuführen. Mein Code sieht derzeit wie folgt aus:Fehlermeldung: Versucht, Befehl auszuführen, ohne eine Verbindung herzustellen Wenn mehrere Tests mit Komponententest ausgeführt werden

import unittest 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import os 
import time 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

gecko = os.path.normpath(os.path.join(os.path.dirname(__file__), 'geckodriver')) 
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\Firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe') 

class PythonOrgSearch(unittest.TestCase): 

    def setUp(self): 
     self.driver = driver 

    def test_business_excellence_opens(self): 
     driver.get("http://url.network.com") 
     self.assertIn("Page Title", driver.title) 

    def test_home_links(self): 
     driver.find_element_by_id('webapps').click() 
     self.assertTrue('SPT facilitates the cultural change' in self.driver.page_source) 
     time.sleep(1) 
     driver.find_element_by_id('complexity').click() 
     self.assertTrue('Thank you again' in self.driver.page_source) 
     time.sleep(1) 

    def test_contact_page(self): 
     driver.get("http://url.network.com/Home/Contact") 
     time.sleep(2) 
     driver.find_element_by_id('name').send_keys('name') 
     driver.find_element_by_id('ID').send_keys('123456') 
     driver.find_element_by_id('email').send_keys('[email protected]') 
     driver.find_element_by_id('message').send_keys('Unit testing form') 
     driver.find_elements_by_css_selector("button[type='submit']")[0].click() 

    def tearDown(self): 
     self.driver.close() 

if __name__ == "__main__": 
    unittest.main() 

Um sie eins nach dem eigenen betreibe ich hinzufügen driver = self.driver und driver.get („url.network.com“) an der Spitze der Funktion

Antwort

0

Ich hatte auch das gleiche Problem, ich habe verstanden, dass Sie keine Marionettensitzung begonnen haben, bevor Sie versuchen, mit dem Hafen zu sprechen. @After (Annotation), Wenn Sie diese Annotation verwenden und der Treiber geschlossen ist und Marionette/Gecko nicht in der Lage ist, erneut zu initiieren. Lösung: Entfernen Sie driver .close(); nach jeder Testfalloption. 1) für den individuellen Testfall wird der Treiber gestartet und geschlossen 2) Um anderen Testfall zu starten, sollte der Treiber erneut starten, aber gecko konnte für den zweiten Testfall nicht initialisiert werden, entfernen Sie driver.close nach dem Ende jedes Testfalls . Hier in Ihrem Fall:

def tearDown(self): 
     self.driver.close() 

kann nicht Ende eines jeden Testfall sein, Sie am Ende des letzten Testfall können

Verwandte Themen