18

我正在用 Selenium 编写一些测试。

当我运行我的 selenium 测试(LiveServerTestCase类型)并且我的代码中有一些错误(不是在测试中,我的意思是在执行的代码中,比如我使用 selenium 到达的主页视图)我得到 500 模板(通常我得到什么时候我有 DEBUG = False) 即使我有:

DEBUG = True 
INTERNAL_IPS = ('127.0.0.1',)

我坚持这一点,我不明白为什么我的测试失败了(因为在公共 500 中我没有显示异常)。

为什么它会这样?我在哪里可以解决?

当我运行 runserver 时,它运行良好(我得到了回溯)。

4

3 回答 3

18

来自 django 文档https://docs.djangoproject.com/en/1.4/topics/testing/#other-test-conditions

此时似乎无法覆盖它,即使使用https://docs.djangoproject.com/en/1.4/topics/testing/#django.test.utils.override_settings

在返回 500 响应时查看调试信息的唯一方法是记录它。

编辑:我找到了一种设置DEBUG = True硒测试的方法。在我的子类中,我重写了构造函数并更改了设置。

from django.conf import settings

class SeleniumLiveServerTestCase(LiveServerTestCase):

    def __init__(self, *args, **kwargs):
        super(SeleniumLiveServerTestCase, self).__init__(*args, **kwargs)
        if settings.DEBUG == False:
            settings.DEBUG = True

它很丑但有效!

于 2013-01-29T15:39:23.187 回答
7

我遇到了同样的问题,现在可以覆盖设置。

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

from django.test import override_settings

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

    ...

django 文档中的详细信息

于 2016-11-04T17:29:16.870 回答
0

我自己对 Selenium 测试套件不是很熟悉,但我知道如果您正在部署应用程序并且您的 IP 地址未在“INTERNAL_IPS”元组中注册,即使 DEBUG 设置为,您也可能看不到回溯真的。当您使用 Django 的 runserver 时,它会自动将您的本地计算机添加到 INTERNAL_IPS 设置中,但通常这是一个空元组。我敢打赌,Selenium 并没有为您这样做,这可能就是您看不到回溯的原因。如果您还没有,我会尝试添加。

这样的事情应该可以正常工作:

INTERNAL_IPS = ('127.0.0.1',)

Django 设置 (INTERNAL_IPS)

于 2013-01-28T17:44:02.470 回答