簡體   English   中英

Django:為什么我在運行LiveServerTestCase測試時無法獲得回溯(如果出現錯誤)?

[英]Django: why i can't get the tracebacks (in case of error) when i run LiveServerTestCase tests?

我正在用Selenium寫一些測試。

當我運行我的selenium測試( LiveServerTestCase類型)並且我的代碼中有一些錯誤(不是在測試中,我的意思是在執行的代碼中,就像我用selenium到達的主頁視圖)我得到500模板(通常我得到當我有DEBUG = False)即使我有:

DEBUG = True 
INTERNAL_IPS = ('127.0.0.1',)

我堅持這一點,我不明白為什么我的測試失敗(因為在公眾500我沒有顯示例外)。

為什么它表現得那樣? 我在哪里可以解決?

當我運行runserver時它完美運行(我得到回溯)。

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

它很丑,但有效!

我遇到了同樣的問題,現在可以覆蓋設置。

根據您的示例,您將導入override_settings並將裝飾器放在類的上方:

from django.test import override_settings

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

    ...

django docs中的詳細信息

我自己並不十分熟悉Selenium測試套件,但我知道如果你正在部署應用程序並且你的IP地址沒有在“INTERNAL_IPS”元組中注冊,即使將DEBUG設置為,你也可能看不到回溯真正。 當您使用Django的runserver時,它會自動將您的本地計算機添加到INTERNAL_IPS設置,但通常這是一個空元組。 我敢打賭,Selenium並沒有為你做這件事,這可能就是你沒有看到追溯的原因。 如果你還沒有,我會嘗試添加它。

像這樣的東西應該工作正常:

INTERNAL_IPS = ('127.0.0.1',)

Django設置(INTERNAL_IPS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM