2009-08-24 3 views
0

私はRails testing docを読んでいました。さまざまなタイプのテストについて非常に包括的に見えます。私はまたTesting Routesのセクションに気づいた。誰も私がDjango/Pythonでそれをやる方法を知っていますか?私はテストする必要があるいくつかの一般的なURLを持つWebサイトをたくさん持っています。ここでは、Rubyで行うの方法は次のとおりです。DjangoのRailのテストルートに相当するものは何ですか?

def test_should_route_to_post 
    assert_routing '/posts/1', { :controller => "posts", :action => "show", :id => "1" } 
end 

答えて

0

DjangoはDjangoのWebアプリケーションをテストするために、かなり大規模なライブラリを持っていません。テストの詳細はこの回答の対象外ですが、詳細はtesting Django applicationsの関連ドキュメントを参照してください。特に、making requeststesting responsesのセクションに興味があると思うので、(テストの目的で)URLへのリクエストを行い、レスポンスをテストすることができます。 DjangoにはTestCaseというサブクラスがあり、HTTPリクエストとレスポンス用に特別に設計されたassertionsが含まれています。

2

Railsのようなルートをテストしたい場合はRyan Wilcox explains how to test routes directlyです。 (簡単に)彼の答えをカプセル化するには、リゾルバをインポートし、それを解決するかをテストすることができます一致に失敗すると、あなたがキャッチする必要があります例外をスローすることを

>>> from django.core.urlresolvers import get_resolver 
>>> resolver = get_resolver(None) 
>>> resolver.resolve('/some/path/') 
ResolverMatch(func=...) 

注意を。

get_resolver(None)は、のリゾルバをすべて取得します。アクティブなsettings.pyのルート。

>>> from django.core.urlresolvers import get_resolver 
>>> import my_app 
>>> resolver = get_resolver(my_app.urls) 

(P.S.は、上記python manage.py shellが立ち上げた、あなたはジャンゴ・幸せインタプリタにいると仮定し)

:あなただけの1つのアプリからのルートをテストしたい場合は、あなたのような何かを行うことができます
関連する問題