首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Django项目URL不能全部用于Django测试客户端?

为什么Django项目URL不能全部用于Django测试客户端?
EN

Stack Overflow用户
提问于 2010-08-20 16:07:03
回答 2查看 1.5K关注 0票数 2

我一直试图在我的项目中添加django-lean应用程序。django-精益应用程序不在我正在开发的项目中,而是在PYTHONPATH上。

我还没能让django-精益测试通过。

问题似乎是TestCase为urls定义了一个值:

代码语言:javascript
复制
 urls = 'django_lean.experiments.tests.urls'

据我所知,测试只得到@‘django_lean.testents.tests.urls’的urls,而不是项目其余部分的urls。

这会导致错误消息,例如:

代码语言:javascript
复制
NoReverseMatch: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found.

这些是由项目中的{% url %}模板标记触发的。

如何确保项目的所有urls都可用于测试?

编辑:有人给我看了一个脚本来打印可见的URL:

代码语言:javascript
复制
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调用了这个脚本,这是输出:

代码语言:javascript
复制
   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‘的urls

代码语言:javascript
复制
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运行Python2.7

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-27 21:08:20

解决办法很简单。只需将主项目的URL导入到应用程序的urls.py中即可。

代码语言:javascript
复制
from forum.urls import urlpatterns

或者对于更通用的解决方案:

代码语言:javascript
复制
from settings import ROOT_URLCONF as project_urls
urlpatterns = __import__('forum.urls').urls.urlpatterns
票数 2
EN

Stack Overflow用户

发布于 2010-08-24 20:11:52

要列出您的django知道的所有url模式,可以使用answer suggested here。从您的测试中运行此命令,并打印/记录输出。

请注意,更好的方法是显式地说明从哪里导入urls

代码语言:javascript
复制
 from myproject import urls

因为您可能有一些其他模块包含urls文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3532695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档