18

これはベスト プラクティスの質問です。

Django でテストを作成する場合、tests.py で URL をハードコーディングするのと、ディスパッチの reverse() 関数を使用して正しい URL を取得するのとのどちらがよいでしょうか?

ハードコーディングされた URL をテストに使用するのは正しい方法のようにしか思えませんが、同時に、reverse() を使用しない十分な理由が思いつきません。

オプション A.reverse()

# Data has already been loaded through a fixture
def test_view_blog(self):
    url = reverse('blog', kwargs={'blog_slug':'test-blog'})
    response = self.client.get(url)
    self.failUnlessEqual(response.status_code, 200)

オプション B. ハードコーディング

# Data has already been loaded through a fixture
def test_view_blog(self):
    url = '/blog/test-blog/'
    response = self.client.get(url)
    self.failUnlessEqual(response.status_code, 200)
4

4 に答える 4

6

最近、 django-test-utils経由でTwillを使用して、Django の作業の一部を単体テストするようになりました。

URL をハードコーディングしたり、リバースを使用したりする代わりに、twill.follow('Blog')(ページ上の「ブログ」リンクをたどる) などを使用します。

これにより、Web ブラウザーが表示するのと同じように Web サイトの動作を実際にテストし、他の方法ではできないことをキャッチできます。たとえば、ナビゲーション リンクから誤って「ブログ」リンクを削除した場合、失敗します。

于 2009-10-15T21:07:21.243 に答える
1

ビュー名で URL を取得するには、reverse 関数を使用することをお勧めします。これにより、ビューがテストされるだけでなく、ビュー名が同じままであることも保証されます。

内部 API テストとして参照してください。一部の URL が壊れているかどうかを認識し、テンプレートの {% url %} タグを更新するように通知されます。

于 2009-11-06T22:26:41.160 に答える
0

twill.follow('Blog')&の両方を実行しないのはなぜreverse()ですか?

于 2010-02-11T16:20:18.827 に答える