Django LiveTestServerCase没有使用正确的设置

时间:2013-12-02 11:30:39

标签: django selenium

在Django项目中,我使用selenium运行一些UI测试,使用LiveServerTestCase

我的一个测试用例失败了,当使用Firefox驱动程序时,我可以看到一个页面抛出“服务器错误(500)”,这意味着DEBUG设置为False这不是我运行本地开发服务器的情况。

测试服务器是如何启动的?为什么不使用定义DEBUG = True的设置?

其他网址(例如主页网址)返回正常,因此服务器正在运行。但我只是不明白为什么它没有显示调试信息,以及它正在使用哪些设置。

我的测试用例供参考:

class LoginTest(LiveServerTestCase):

    @classmethod
    def setUpClass(cls):
        try:
            from selenium.webdriver import PhantomJS
            cls.selenium = PhantomJS()
        except:
            from selenium.webdriver.firefox.webdriver import WebDriver
            cls.selenium = WebDriver()
        super(LoginTest, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()
        super(LoginTest, cls).tearDownClass()

    def test_fb_login(self):
        self.selenium.get('%s%s' % (self.live_server_url, reverse('account_login')))
        # TEST SERVER RETURNS 500 ON THIS URL WITH NO DEBUG INFO

3 个答案:

答案 0 :(得分:6)

根据Testing Django Application - Django Documentation

  

无论配置中DEBUG设置的值如何   文件,所有Django测试都以 DEBUG = False 运行。这是为了确保这一点   观察到的代码输出与将在a中看到的相匹配   生产设置。


仍然可以override this using

with self.settings(DEBUG=True):
    ...

虽然我不推荐它,但它仍然有用。 (Thomas Orozco的评论)

答案 1 :(得分:0)

我遇到了同样的问题,可以用装饰器覆盖设置。

根据您的示例,您将导入override_settings并将装饰器放在类上方:

from django.conf import settings
from django.test import override_settings

@override_settings(DEBUG=True)
class LoginTest(LiveServerTestCase):

    ...
<{3}}

中的

详细信息

答案 2 :(得分:0)

您还可以在TestCase setUp()方法中更改设置。

from django.conf import settings

class MyTest(LiveServerTestCase):
    def setUp(self):
        # Change settings here
        settings.DEBUG = True

        # ...