Фон
ОК, у меня есть библиотека wagtail_references , которая, как и многие библиотеки сниппетов, использует крючки трясогузки для добавления представлений администратора в CMS трясогузки.
Скажи, что у меня есть wagtail_hooks.py
@hooks.register('register_admin_urls')
def register_admin_urls():
return [
url(r'^references/', include(admin_urls, namespace='wagtailreferences')),
]
И регистрируемые просмотры находятся в views/reference.py
:
@permission_checker.require('add')
def add(request):
Reference = get_reference_model()
ReferenceForm = get_reference_form(Reference)
if request.method == 'POST':
# STUFF I WANT TO TEST BECAUSE IT DOESN'T WORK PROPERLY
else:
form = ReferenceForm(user=request.user)
return render(request, "wagtail_references/references/add.html", {'form': form})
Так в моем файле test_stuff.py
Я бы получил:
class TestReferenceIndexView(TestCase, WagtailTestUtils):
def setUp(self):
self.login()
def post(self, params=None):
params = params if params else {}
return self.client.post(reverse('wagtailreferences:add'), params)
def test_simple(self):
response = self.post()
self.assertEqual(response.status_code, 201)
Проблема
Но test_simple
не удается, потому что, конечно, URL-адреса для представления, которое тестируется, динамически подключаются, а не определяются в urls.py
,Я получаю:
django.urls.exceptions.NoReverseMatch: 'wagtailreferences' is not a registered namespace
Вопрос
Как я могу проверить конечные точки, URL-адреса которых зарегистрированы с помощью трясогузки?
Я пробовал
Регистрациякрючки вручную в тестовом примере, например:
class TestReferenceIndexView(TestCase, WagtailTestUtils):
def setUp(self):
self.register_hook('register_admin_urls', register_admin_urls)