2017-05-16 3 views
3

Ich versuche, ein LiveServerTestCase mit Django 1.10.4 einzurichten. Immer wenn ich meine Tests starte, öffnet sich der Browser und kann localhost nicht erreichen. Mein Frontend ist eine separate angular/react App. Also baue ich meine statischen Assets mit grunt build und starte collectstatic. Unten ist der Code für meine Tests.Django LiveServerTestCase hängt, wenn ich meine Tests ausführen

from django.test.testcases import LiveServerTestCase 
from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 



class ChromeTestCase(LiveServerTestCase): 

    @classmethod 
    def setUpClass(cls): 
     super(ChromeTestCase, cls).setUpClass() 
     cls.driver = webdriver.Chrome('/path/to/chromedriver') 
     cls.driver.implicitly_wait(10) 
     cls.wait = WebDriverWait(cls.driver, 10) 

    @classmethod 
    def tearDownClass(cls): 
     cls.driver.quit() 
     super(ChromeTestCase, cls).tearDownClass() 

    def test_user_sign_up_from_form(self): 
     self.driver.get('%s%s' % (self.live_server_url, '/')) 

     self.wait.until(EC.presence_of_element_located((By.XPATH, '//input[@id="email"]'))) 
     email_input = self.driver.find_element_by_xpath(
      '//input[@id="email"]') 
     email_input.send_keys("[email protected]") 
     password_input = self.driver.find_element_by_xpath(
      '//input[@id="password"]') 
     password_input.send_keys("secret") 

     signup_button = self.driver.find_elements_by_xpath(
      '//*[@id="signup_button"]') 
     signup_button.click() 

     url = self.live_server_url + '/home' 
     self.assertEquals(self.driver.current_url, url) 

Weiß jemand, warum meine Tests den Testserver nicht erreichen können?

Auch die URL, die mein Testserver erstellt, ist https.

+0

Haben Sie Ihr js und Netzwerk debuggen? Wenn Sie Ihren Teardown kommentieren, bleibt der Browser erhalten und Sie können devel tools öffnen. Und für js fand ich Safer Phantomjs Browser. – XaviP

+0

Wenn ich die Konsole überprüfe, erhalte ich einen Fehler ERR_CONNECTION_REFUSED auf localhost: 8011/und in der Netzwerk-Registerkarte bekomme ich einen Ressourcenfehler beim Laden. Danke für den Phantomjs Vorschlag. – alexkeating

Antwort

2

Das Problem wurde mit einer Middleware in Verbindung gebracht, die Anfragen an https bei der Produktion weiterleitet. Ich habe meine Tests funktioniert, indem ich diese Middleware entfernt habe.

0

Sie können DEBUG mit LiveServerTestCase ermöglichen, das Hinzufügen dieser Zeilen:

from django.test import override_settings 

@override_settings(DEBUG=True) 
class ChromeTestCase(LiveServerTestCase): 
Verwandte Themen