从Django 2.0中的LiveServerTestCase获取正确的端口号

时间:2018-02-13 03:48:12

标签: python django selenium

当尝试使用以下代码测试管理员登录时,我发现self.live_server_url返回类似http://localhost:39346的内容,其中每次运行时端口号都不同。

from django.test import LiveServerTestCase
from selenium import webdriver

class AdminLoginTests(LiveServerTestCase):
def setUp(self):
    self.selenium = webdriver.Firefox()
    super(AdminLoginTests, self).setUp()

def tearDown(self):
    self.selenium.quit()
    super(AdminLoginTests, self).tearDown()

def test_admin_login(self):
    # ...
    print('url: %s' %self.live_server_url)

如何获取正在运行的服务器的正确端口号8000?假设我通过python manage.py runserver 0.0.0.0:8000运行服务器。谢谢!

2 个答案:

答案 0 :(得分:1)

LiveServerTestCase故意生成一个带有该端口的新实例。这样您就可以测试生产环境而无需关闭生产服务器(默认情况下在8000上运行)。

但是,如果要更改运行调试的端口,可以初始化为其他端口号。

class TempTest(LiveServerTestCase):
    def __init__(self):
        super(TempTest, self).__init__()
        self.port = 8910

    def setUp(self)
        # ....

答案 1 :(得分:0)

这是在Django 1.11.26版本下对我有用的

class TempTest(LiveServerTestCase):
    port = 8888
    host = "0.0.0.0" # If you want your test server to be public