我正在阅读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
答案 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 requests和testing responses上的部分感兴趣,这些部分允许您向URL发出请求(用于测试目的),并测试响应。 Django还有一个TestCase
子类,其中包含专门用于HTTP请求和响应的assertions。