gpt4 book ai didi

python - 当我运行多个测试时,Django LiveServerTestCase 无法加载页面

转载 作者:太空狗 更新时间:2023-10-30 01:28:39 25 4
gpt4 key购买 nike

我正在尝试在一个 Django LiveServerTestCase 中运行多个测试。当我运行任何单个测试(其他人评论)时,一切都按预期进行。但是当我运行带有两个测试的测试用例时,第一个运行正常,但第二个加载页面时显示“内部服务器错误”消息。

代码:

from django.test import LiveServerTestCase
from selenium.webdriver.firefox.webdriver import WebDriver


class MyLiveServerTestCase(LiveServerTestCase):
"""
BaseCleass for my selenium test cases
"""
@classmethod
def setUpClass(cls):
cls.driver = WebDriver()
cls.url = cls.live_server_url

super(MyLiveServerTestCase, cls).setUpClass()

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

class AdminEditFormTest(MyLiveServerTestCase):
"""
Some test case
"""

def test_valid_data(self):
"""
test when user enters correct data
"""
self.driver.get(self.url)
# ...

def test_invalid_data(self):
""" test when user enters INcorrect data """
self.driver.get(self.url)
# ...

如果我使用 close() 而不是 quit(),它会失败并显示“错误 98:地址已在使用”,类似于 this情况除外,只有当我在一个 LiveServerTestCase 类中有多个测试或在一个 .py 文件中有多个测试用例时才会出错。

如何在拆卸时使 LiveServerTestCase 成为免费端口(如果它是核心问题)?

有解决办法吗?我想要的只是在本地和远程服务器上同等运行的功能性 selenium 测试。

我正在使用 Django 1.6.7、Firefox 37.0、Selenium 2.45.0

更新

使用方法而不是类方法会导致同样的问题。

def setUp(self):
self.driver = WebDriver()
self.url = self.live_server_url

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

最佳答案

最后,“内部服务器错误”消息的原因是 WebDriver 在 quit() 上从数据库中删除了所有数据,包括内容类型和其他默认表

这会导致在下一次测试开始时尝试加载夹具时出错。

N.B. 此行为实际上是由于 TransactionTestCase(LiveServerTestCase 继承)在测试运行后重置数据库的方式:it truncates all tables


到目前为止,我的解决方案是在每次测试运行时加载包含所有数据(也是“默认”Django 数据,例如内容类型)的装置。

class MyLiveServerTestCase(LiveServerTestCase):    
"""
BaseClass for my Selenium test cases
"""
fixtures = ['my_fixture_with_all_default_stuff_and_testing_data.json']

@classmethod
def setUpClass(cls):
cls.driver = WebDriver()
cls.url = cls.live_server_url
super(MyLiveServerTestCase, cls).setUpClass()

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

感谢@help_asap 指出关于 quit() 问题的刷新数据库!

关于python - 当我运行多个测试时,Django LiveServerTestCase 无法加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com