プロジェクトにdjango-leanアプリを追加しようとしています。django-lean アプリは、私が取り組んでいるプロジェクトにはありません。PYTHONPATH にあります。
django-lean テストに合格することができませんでした。
問題は、TestCase が URL の値を定義していることです。
urls = 'django_lean.experiments.tests.urls'
私が知る限り、テストは@ 'django_lean.experiments.tests.urls'にあるURLのみを取得していますが、プロジェクトの残りのURLは取得していません。
これにより、次のようなエラー メッセージが表示されます。
NoReverseMatch: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found.
これらは、プロジェクトの {% url %} テンプレート タグによってトリガーされます。
プロジェクトのすべての URL がテストに使用できることを確認するにはどうすればよいですか?
編集: 誰かが表示されている URL を出力するスクリプトを見せてくれました:
import urls
def show_urls(urllist, depth=0):
for entry in urllist:
print " " * depth, entry.regex.pattern
if hasattr(entry, 'url_patterns'):
show_urls(entry.url_patterns, depth + 1)
このスクリプトをipdbから呼び出しました。これが出力です。
ipdb> import urls
ipdb> show_urls(urls.urlpatterns)
^test-experiment/(?P<experiment_name>.*)$
^test-clientsideexperiment/(?P<experiment_name>.*)$
^admin/
^(?P<experiment_name>.+)/$
^$
^main-app/
^goal/(?P<goal_name>.*)$
^confirm_human/$
これは、@ 'django_lean.experiments.tests.urls' にある URL に対応します。
urlpatterns = patterns('django_lean.experiments.tests.views',
url(r'^test-experiment/(?P<experiment_name>.*)$', 'experiment_test'),
url(r'^test-clientsideexperiment/(?P<experiment_name>.*)$', 'clientsideexperiment_test'))
urlpatterns += patterns('',
url(r'^admin/', include('django_lean.experiments.admin_urls')),
url(r'^main-app/', include('django_lean.experiments.urls')),
私が抱えている問題は、プロジェクト内の他のアプリからの名前付き URL が URL テンプレート タグによって呼び出され、テストにアクセスできないため、すべてのテストが失敗することです。
Django 1.2.1でPython 2.7を実行しています