Jednym ze sposobów byłoby reverse
nazw URL i zatwierdź
Przykład
urlpatterns = [
url(r'^archive/(\d{4})/$', archive, name="archive"),
url(r'^archive-summary/(\d{4})/$', archive, name="archive-summary"),
]
Teraz w teście
from django.urls import reverse
url = reverse('archive', args=[1988])
assertEqual(url, '/archive/1988/')
url = reverse('archive-summary', args=[1988])
assertEqual(url, '/archive-summary/1988/')
Prawdopodobnie testowanie widoki jakikolwiek.
Teraz, aby sprawdzić, czy adres URL połączyć się z prawej widzenia, można użyć resolve
from django.urls import resolve
resolver = resolve('/summary/')
assertEqual(resolver.view_name, 'summary')
Teraz w zmiennej resolver
(ResolverMatch
klasy instancji), masz następujące opcje
'app_name',
'app_names',
'args',
'func',
'kwargs',
'namespace',
'namespaces',
'url_name',
'view_name'
FYI moi koledzy przyjęli tę koncepcję i złożyli ["asert"] (https://github.com/incuna/incuna-test-utils/blob/master/incuna_test_utils/testcases/urls.py#L8) za to w [ nasza nowa testowa biblioteka testująca Units) (https://github.com/incuna/incuna-test-utils). – meshy
Używam: 'assertEqual (resolver.func.func_name, 'archive')', aby przetestować, czy resolver wyląduje na poprawnym widoku. O ile rozumiem 'resolver.view_name' jest tak naprawdę nazwą reguły url, a nie widoku. –
Czy zaleca się używanie 'reverse (...)' dla adresów URL w testach Django w ogóle (np. Dla widoków), czy tylko w tym przypadku w celu specyficznego testowania urządzeń? Widzę, że często używany w testach widokowych, ale wydaje się, że jest to anty-wzór. –