我从使用Python的TDD中学习了Django函数测试,并适应了我的项目。
我的英国“金融时报”真的很简单,看看网址的标题。
我使用live_server_url进行selenium测试。但是它会转到另一个端口号(56458),而不是8000。(当我看这本书的时候,它不是)
$ 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是:
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。
所以我试着看一下监听端口(我认为这部分我还不成熟):
$ netstat | grep LISTEN
$ # nothing printed!发布于 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。
我认为在开发服务器上进行测试是错误的,因为这些数据可以被修改(手动和以前的测试),因此是不可复制的。我认为测试应该是完全独立的,这样它就可以单独运行,也可以与任意数量的其他测试用例任意组合运行。
发布于 2021-02-13 06:48:11
from selenium import webdriverfrom 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/')))发布于 2021-02-13 06:39:21
我和你一样被困在同一个问题上。同样的感觉。所以真正的问题是我的主页网址。我的主页网址类似于:http://127.0.0.1:8000/api/,但是服务器正在尝试使用http://localhost:56458/。
self.browser.get(('%s%s' % (self.live_server_url, '/api/')))https://stackoverflow.com/questions/48041841
复制相似问题