【问题标题】:Django: why i can't get the tracebacks (in case of error) when i run LiveServerTestCase tests?Django:为什么我在运行 LiveServerTestCase 测试时无法获得回溯(以防出错)?
【发布时间】:2013-01-12 01:41:09
【问题描述】:

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

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

DEBUG = True 
INTERNAL_IPS = ('127.0.0.1',)

我被困住了,我不明白为什么我的测试失败了(因为在公共 500 中我没有显示异常)。

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

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

【问题讨论】:

    标签: python django debugging selenium traceback


    【解决方案1】:

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

    虽然很丑,但是很管用!

    【讨论】:

      【解决方案2】:

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

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

      from django.test import override_settings
      
      @override_settings(DEBUG=True)
      class SeleniumLiveServerTestCase(LiveServerTestCase):
      
          ...
      

      详情在django docs

      【讨论】:

        【解决方案3】:

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

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

        INTERNAL_IPS = ('127.0.0.1',)
        

        Django Settings (INTERNAL_IPS)

        【讨论】:

        • 遗憾的是,我的 settings.py 中已经有了这个:|我会尝试调试它,看看它在测试运行时是否设置正确
        • 我已经更新了问题,不涉及 django social auth,即使我在到达的第一个视图中添加了缩进错误,我也会得到 500
        猜你喜欢
        • 2017-10-16
        • 2015-06-05
        • 2019-05-20
        • 2022-07-18
        • 1970-01-01
        • 2016-06-20
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多