एक तरह से reverse
यूआरएल के नाम करने के लिए हो सकता है और मान्य
उदाहरण
urlpatterns = [
url(r'^archive/(\d{4})/$', archive, name="archive"),
url(r'^archive-summary/(\d{4})/$', archive, name="archive-summary"),
]
अब, परीक्षण
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/')
आप शायद देखा गया वैसे भी परीक्षण कर रहे हैं में होगा।
अब, परीक्षण करने के लिए है जो URL सही दृश्य से कनेक्ट है, तो आप अब इस्तेमाल कर सकते हैं resolve
from django.urls import resolve
resolver = resolve('/summary/')
assertEqual(resolver.view_name, 'summary')
चर resolver
(ResolverMatch
वर्ग उदाहरण) में, आप निम्न विकल्प हैं
'app_name',
'app_names',
'args',
'func',
'kwargs',
'namespace',
'namespaces',
'url_name',
'view_name'
एफवाईआई मेरे सहयोगियों ने इस अवधारणा को लिया है और इसके लिए एक ["जोर"] (https://github.com/incuna/incuna-test-utils/blob/master/incuna_test_utils/testcases/urls.py#L8) बनाया है [ हमारे नए unittest परीक्षण यूटिल लाइब्रेरी] (https://github.com/incuna/incuna-test-utils)। – meshy
मैं इसका उपयोग कर रहा हूं: 'assertEqual (resolver.func.func_name,' archive ')' परीक्षण करने के लिए कि सही दृश्य पर रिज़ॉलर भूमि। जहां तक मैं समझता हूं 'resolver.view_name' वास्तव में यूआरएल नियम का नाम है, दृश्य नहीं। –
क्या आप सामान्य रूप से Django परीक्षणों (यानी, विचारों के लिए) में यूआरएल के लिए 'रिवर्स (...)' का उपयोग करने का समर्थन करते हैं, या सिर्फ इस मामले में विशेष रूप से इकाई परीक्षण यूआरएल के लिए? मुझे लगता है कि यह देखने के लिए बहुत कुछ उपयोग किया जाता है, लेकिन यह एक विरोधी पैटर्न की तरह लगता है। –