django selenium LiveServerTestCase

时间:2015-09-28 20:15:13

标签: python django selenium

我遇到了selenium和LiveServerTestCase的问题。 当我运行./manage.py test functional_tests时,它会加载一个页面"标题:问题加载页面。身体:无法连接..."

functional_tests.py:

from selenium import webdriver
from django.test import LiveServerTestCase

class GeneralFunctionalTests(LiveServerTestCase):
    def setUp(self):
        self.browser = webdriver.Chrome()
        self.browser.implicitly_wait(3)

    def tearDown(self):
        self.browser.quit()

    def test_can_navigate_site(self):
        self.browser.get('http://localhost:8000')
        assert 'Django' in self.browser.title

我尝试使用classmethod设置upUp和tearDown:

@classmethod
def setUpClass(cls):
    super(MySeleniumTests, cls).setUpClass()
    cls.browser = WebDriver()
...

结果是一样的。 但我可以使用self.browser.get('http://example.com')在网络中加载任何其他网页。 Selenium是最新的。

谢谢!

3 个答案:

答案 0 :(得分:15)

你做错了什么?

默认情况下,

LiveServerTestCase在端口8081上运行实时服务器,并且您尝试访问端口8000上的网址。现在,由于没有服务器侦听端口8000,浏览器无法加载页面。

来自LiveServerTestCase docs:

  

默认情况下,实时服务器的地址为 localhost:8081 且已满   可以在测试期间使用 self.live_server_url

访问网址

您需要做什么?

选项1:更改网址

您可以将网址更改为指向8081端口。

def test_can_navigate_site(self):
    self.browser.get('http://localhost:8081') # change the port
    assert 'Django' in self.browser.title

选项2:使用实时服务器网址

您可以在测试用例中使用live_server_url@yomytho也指出了这一点。

def test_can_navigate_site(self):
    self.browser.get(self.live_server_url) # use the live server url
    assert 'Django' in self.browser.title

选项3:在端口8000上运行实时服务器

在Django 1.10之前,您可以通过8000选项将端口号--liveserver传递给测试命令,以便在端口8000上运行liveserver。

$ ./manage.py test --liveserver=localhost:8000 # run liveserver on port 8000

此参数为removed in Django 1.11,但现在您可以在测试类上设置端口:

class MyTestCase(LiveServerTestCase):
    port = 8000

    def test_can_navigate_site(self):
        ....

答案 1 :(得分:5)

您尝试获取错误的服务器地址:by default, the address is http://localhost:8081

访问正确地址的最佳方式是使用self.live_server_url

    def test_can_navigate_site(self):
        self.browser.get(self.live_server_url)

答案 2 :(得分:2)

适用于使用Django 1.11的用户

  

实时服务器侦听localhost并绑定到端口0,端口0使用操作系统分配的空闲端口。在测试期间,可以使用self.live_server_url访问服务器的URL。

继续使用self.live_server_url。