Django LiveTestServerCase没有使用正确的设置

Yuv*_*dam 4 django selenium

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

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

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

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

我的测试用例供参考:

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
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 6

根据测试Django应用程序 - Django文档:

无论配置文件中DEBUG设置的值如何,所有Django测试都以DEBUG = False运行.这是为了确保您观察到的代码输出与生产设置中的内容相匹配.


仍然可以使用以下方式覆盖它:

with self.settings(DEBUG=True):
    ...
Run Code Online (Sandbox Code Playgroud)

虽然我不推荐它,但它仍然可以不时有用.(Thomas Orozco的评论)

  • @YuvalAdam要添加到此:仍然可以使用[`with self.settings(DEBUG = True)`]覆盖它:(https://docs.djangoproject.com/en/1.6/topics/testing/overview/ #压倒一切的设置).虽然我不推荐它,但它仍然有用. (2认同)