web-dev-qa-db-ja.com

ユニットテストDjango urls?

私のアプリケーションでは、urls.py。 URLの意味のある単体テストの書き方に関する推奨事項はありますか?

FWIWこの質問は、私がテスト駆動開発を実験しており、それらを修正するコードを書く前にテストに失敗することを望んでいるときに生じました。

41
meshy

1つの方法は、 reverse URL名と検証

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')

変数resolverResolverMatch class instance)には、次のオプションがあります

 'app_name',
 'app_names',
 'args',
 'func',
 'kwargs',
 'namespace',
 'namespaces',
 'url_name',
 'view_name'
56
karthikr