52

を除くすべてのアプリケーションで 100% のテスト カバレッジを達成しましたurls.pyURL に対して意味のある単体テストを作成する方法について、何か推奨事項はありますか?

FWIW この質問は、テスト駆動開発を試していて、コードを記述して修正する前に失敗したテストが必要なときに発生しました。

4

3 に答える 3

76

1つの方法は、reverseURL名を検証して検証することです

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クラスインスタンス)には、次のオプションがあります

 'app_name',
 'app_names',
 'args',
 'func',
 'kwargs',
 'namespace',
 'namespaces',
 'url_name',
 'view_name'
于 2013-09-24T16:34:38.133 に答える