Я знаю, что об этом спрашивали некоторое время назад, но я подумал, что отвечу еще раз, чтобы предложить что-то более полное и современное.
У вас есть два варианта решения этой проблемы, один из которых заключается в том, чтобы предоставить свой собственный файл URL-адресов, как следует из ответа SystemParadox:
class MyTestCase(TestCase):
urls = 'my_app.test_urls'
Другой способ - обезьяна исправить ваши URL. Это НЕ рекомендуемый способ работы с переопределенными URL-адресами, но вы можете оказаться в ситуации, когда вам все еще это нужно. Чтобы сделать это для одного тестового случая, не влияя на остальные, вы должны сделать это с помощью метода setUp()
, а затем выполнить очистку с помощью метода tearDown()
.
import my_app.urls
from django.conf.urls import patterns
class MyTestCase(TestCase):
urls = 'my_app.urls'
def setUp(self):
super(MyTestCase, self).setUp()
self.original_urls = my_app.urls.urlpatterns
my_app.urls.urlpatterns += patterns(
'',
(r'^my/test/url/pattern$', my_view),
)
def tearDown(self):
super(MyTestCase, self).tearDown()
my_app.urls.urlpatterns = self.original_urls
Обратите внимание, что это не будет работать, если вы пропустите атрибут класса urls
. Это связано с тем, что в противном случае URL-адреса будут кэшироваться, а исправление обезьяны не вступит в силу, если вы запустите свой тест вместе с другими тестами.