나는 이런 식으로 뭔가가 있습니다에서테스트 중에 urlconf에서 사용되는 장고 설정을 무시하는 방법은 무엇입니까? 내 장고 프로젝트의 urlconf에서
from django.conf import settings
from django.conf.urls import include, url
urlpatterns = [
url(r'^{}/blog'.format(settings.MY_ROOT_DIR),
include('weblogs.urls')),
# ...
]
을 내 settings.py
내가 좋아하는 뭔가를해야합니다 : 이것은 그래서 그가에 사용되는 루트 디렉토리를 설정할 수 있습니다
MY_ROOT_DIR = 'phil'
을 한 장소 (설정)에서 여러 장소.
내가 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
값이 항상 "terry"
의 오버라이드 (override) 설정 "phil"
결코 . 나는 또한 @modify_settings
을 시험해보고 클래스가 아닌 테스트 메소드에서 사용했다.
@override_settings
가 적용되기 전에 urlconf가 장고에 의해로드 된 것 같습니까? 이 문제를 해결할 방법이 있습니까? 아니면 더 나은 해결책일까요?
아 물론. 나는 이미 테스트 용으로 별도의 설정 파일을 가지고 있지만, 어떤 이유로이 파일을 사용하지 않을 것입니다! 오늘 두뇌가 피곤합니다 :) 감사합니다! –
@ PhilGyford 도움이된다면 정답으로 표시해주세요 :) – hspandher
나에게 5 분을 기다려야 만! –