Django:为什么我在运行LiveServerTestCase测试时无法获得回溯(如果出现错误)?

时间:2013-01-28 16:40:42

标签: python django debugging selenium traceback

我正在用Selenium写一些测试。

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

DEBUG = True 
INTERNAL_IPS = ('127.0.0.1',)

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

为什么表现如此?我在哪里可以解决?

当我运行runserver时,它运行正常(我得到回溯)。

3 个答案:

答案 0 :(得分:17)

来自django docs 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

它很丑,但有效!

答案 1 :(得分:5)

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

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

from django.test import override_settings

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

    ...
<{3}}

中的

详细信息

答案 2 :(得分:0)

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

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

INTERNAL_IPS = ('127.0.0.1',)

Django Settings (INTERNAL_IPS)