Un modo potrebbe essere quello di reverse
nomi URL e convalidare
Esempio
urlpatterns = [
url(r'^archive/(\d{4})/$', archive, name="archive"),
url(r'^archive-summary/(\d{4})/$', archive, name="archive-summary"),
]
Ora, nel test
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/')
Probabilmente si sta verificando i punti di vista in ogni modo.
Ora, per verificare che l'URL collegano alla vista a destra, è possibile utilizzare resolve
from django.urls import resolve
resolver = resolve('/summary/')
assertEqual(resolver.view_name, 'summary')
Ora, nel resolver
(ResolverMatch
un'istanza di classe) variabile, sono disponibili le seguenti opzioni
'app_name',
'app_names',
'args',
'func',
'kwargs',
'namespace',
'namespaces',
'url_name',
'view_name'
Cordiali saluti, i miei colleghi hanno preso questo concetto e fatto un ["assert"] (https://github.com/incuna/incuna-test-utils/blob/master/incuna_test_utils/testcases/urls.py#L8) per questo in [ la nostra nuova libreria di test per l'unittest] (https://github.com/incuna/incuna-test-utils). – meshy
Sto usando: 'assertEqual (resolver.func.func_name, 'archive')' per verificare che il resolver atterra sulla vista corretta. Per quanto ne so, 'resolver.view_name' è in realtà il nome della regola url, non la vista. –
Ti difendi usando 'reverse (...)' per gli url nei test di Django in generale (cioè per le viste), o solo in questo caso per gli url di test dell'unità specifica? Vedo che è stato utilizzato molto in fase di test, ma sembra un anti-pattern. –