18

私はSeleniumでいくつかのテストを書いています。

セレンテスト(LiveServerTestCaseタイプ)を実行し、コードにエラーがある場合(テストではなく、実行されたコードで、セレンで到達するホームページビューのように)、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 に答える