首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django是如何得到live_server_url的?

Django是如何得到live_server_url的?
EN

Stack Overflow用户
提问于 2017-12-31 10:50:33
回答 4查看 3.3K关注 0票数 2

我从使用Python的TDD中学习了Django函数测试,并适应了我的项目。

我的英国“金融时报”真的很简单,看看网址的标题。

我使用live_server_url进行selenium测试。但是它会转到另一个端口号(56458),而不是8000。(当我看这本书的时候,它不是)

代码语言:javascript
复制
$ python manage.py runserver &
...
Starting development server at http://127.0.0.1:8000/
...
$ python manage.py test functional_test
...
http://localhost:56458
E
======================================================================
...

我的functional_tests/tests.py是:

代码语言:javascript
复制
from django.test import LiveServerTestCase

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import WebDriverException

from time import time, sleep


class NewVistorTest(LiveServerTestCase):

    def setUp(self):
        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(3)


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

    def test_render_a_list_of_candiates_in_home(self):
        self.browser.get(self.live_server_url)
        h1_text = self.browser.find_element_by_tag_name('h1').text

        self.assertEqual(self.browser.title, 'Voting Dapp')
        self.assertEqual(h1_text, 'A Simple Voting Application')

文档说:

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

所以我试着看一下监听端口(我认为这部分我还不成熟):

代码语言:javascript
复制
$ netstat | grep LISTEN
$ # nothing printed!
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-01 15:00:21

您使用的是LiveServerTestCase。它为您启动Django服务器。不需要像上一章那样启动服务器。

LiveServerTestCase的功能与TransactionTestCase基本相同:在安装时在后台启动一个live服务器,并在teardown上关闭它。这允许使用Django虚拟客户机以外的自动化测试客户端(例如Selenium客户机)在浏览器中执行一系列功能测试,并模拟实际用户的操作。

https://docs.djangoproject.com/en/2.0/topics/testing/tools/#django.test.LiveServerTestCase

因此,您的测试服务器应该有一些其他端口,而不是开发服务器。此外,测试服务器是一个空项目,数据库为空。因此,在执行实际测试用例之前,您的测试需要创建所需的内容。

或者,您可以使用--liveserver LIVESERVER指向其他环境的测试。见python manage.py test -h

我认为在开发服务器上进行测试是错误的,因为这些数据可以被修改(手动和以前的测试),因此是不可复制的。我认为测试应该是完全独立的,这样它就可以单独运行,也可以与任意数量的其他测试用例任意组合运行。

票数 2
EN

Stack Overflow用户

发布于 2021-02-13 06:48:11

代码语言:javascript
复制
from selenium import webdriver
代码语言:javascript
复制
from django.urls import reverse
import time

class TestApiPages(StaticLiveServerTestCase):
  
  def setUp(self):
      self.browser = webdriver.Chrome('functional_test/chromedriver.exe')
  
  def tearDown(self):
      self.browser.close()
  
  def test_api_list_displayed(self):
      self.browser.get(('%s%s' % (self.live_server_url, '/admin/')))
票数 2
EN

Stack Overflow用户

发布于 2021-02-13 06:39:21

我和你一样被困在同一个问题上。同样的感觉。所以真正的问题是我的主页网址。我的主页网址类似于:http://127.0.0.1:8000/api/,但是服务器正在尝试使用http://localhost:56458/

代码语言:javascript
复制
self.browser.get(('%s%s' % (self.live_server_url, '/api/')))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48041841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档