Một cách sẽ được reverse
tên URL và xác nhận
Ví dụ
urlpatterns = [
url(r'^archive/(\d{4})/$', archive, name="archive"),
url(r'^archive-summary/(\d{4})/$', archive, name="archive-summary"),
]
Bây giờ, trong các thử nghiệm
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/')
Bạn đang có lẽ là thử nghiệm quan điểm anyways.
Bây giờ, để kiểm tra rằng URL kết nối với quan điểm đúng, bạn có thể sử dụng resolve
from django.urls import resolve
resolver = resolve('/summary/')
assertEqual(resolver.view_name, 'summary')
Bây giờ trong biến (ví dụ lớp ResolverMatch
) resolver
, bạn có các tùy chọn sau
'app_name',
'app_names',
'args',
'func',
'kwargs',
'namespace',
'namespaces',
'url_name',
'view_name'
FYI đồng nghiệp của tôi đã thực hiện khái niệm này và thực hiện ["khẳng định"] (https://github.com/incuna/incuna-test-utils/blob/master/incuna_test_utils/testcases/urls.py#L8) cho nó trong [ thư viện utils thử nghiệm chưa hoàn thành mới của chúng tôi] (https://github.com/incuna/incuna-test-utils). – meshy
Tôi đang sử dụng: 'assertEqual (resolver.func.func_name, 'archive')' để kiểm tra xem trình phân giải có được xem đúng hay không. Theo tôi hiểu 'resolver.view_name' thực sự là tên của quy tắc url, không phải là chế độ xem. –
Bạn có ủng hộ bằng cách sử dụng 'reverse (...)' cho các url trong các bài kiểm tra Django nói chung (tức là, đối với các khung nhìn), hoặc chỉ trong trường hợp này là các url kiểm tra đơn vị cụ thể? Tôi thấy nó được sử dụng rất nhiều trong kiểm tra xem, nhưng nó cảm thấy giống như một anti-pattern. –