私はこのようなものがあります。これはので、私はそれがで使われている、ルートディレクトリを設定することができますですテスト中、urlconfで使用されているDjango設定を上書きする方法は?私のDjangoプロジェクトのURLconfので
MY_ROOT_DIR = 'phil'
:私のsettings.py
で
from django.conf import settings
from django.conf.urls import include, url
urlpatterns = [
url(r'^{}/blog'.format(settings.MY_ROOT_DIR),
include('weblogs.urls')),
# ...
]
を私のようなものがあるでしょういくつかの場所、1つの場所(設定)。
私はURLをテストするために来て、私は@override_settings
decoratorを使用します。
from django.test import TestCase, override_settings
from django.urls import reverse
@override_settings(MY_ROOT_DIR='terry')
class WeblogUrlsTestCase(TestCase):
def test_post_detail_url(self):
self.assertEqual(
reverse('post_detail', kwargs={'slug': 'my-post'}),
'/terry/blog/my-post/'
)
しかし、@override_settings
ても、何も実行されていません - urls.py
で使用MY_ROOT_DIR
値は常に"phil"
あり、"terry"
のは決して上書きされた設定。私も@modify_settings
を試して、クラスではなくテストメソッドで使用しました。
@override_settings
が有効になる前に、urlconfがDjangoによって読み込まれていると思いますか?これを回避する方法はありますか?それとももっと良い解決策ですか?
ああ、もちろん。私はすでにテストのための別の設定ファイルを持っていますが、何らかの理由でこれを使用することを考えていませんでした!私の脳は今日疲れているはずです:)ありがとう! –
@PhilGyford助けがあれば正しい答えとして記入してください:) – hspandher
私はそれを私に許可する前にもう5分待たなければならなかった! –