在Django中,Rail的测试路线相当于什么?

时间:2009-08-24 14:54:40

标签: ruby-on-rails django testing

我正在阅读Rails testing doc,它在解释不同类型的测试时看起来非常全面。我还注意到Testing Routes上的部分。有谁知道我怎么能在Django / Python中做到这一点?我有一堆网站,其中包含一些我需要测试的常用网址。以下是它在Ruby中的用法:

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

2 个答案:

答案 0 :(得分: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。上面假设你是一个django-happy翻译,由python manage.py shell发起)

答案 1 :(得分:0)

Django确实有一个相当广泛的库来测试Django网络应用程序。测试的详细信息有点超出了本答案的范围,但您可以阅读有关testing Django applications的相关文档以获取更多详细信息。特别是,我认为您会对making requeststesting responses上的部分感兴趣,这些部分允许您向URL发出请求(用于测试目的),并测试响应。 Django还有一个TestCase子类,其中包含专门用于HTTP请求和响应的assertions