Django测试:确定执行了哪个视图

时间:2010-09-08 15:29:45

标签: django unit-testing django-views django-testing

在Django testing documentation中,他们承诺你可以“测试是否为给定的URL执行了正确的视图。”

但是我没有发现如何测试执行哪个视图的可能性。我希望在Response class中,但没有关于执行视图的内容。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以这样提取视图函数名称

from django.test.client import Client
c = Client()
response = c.get('/')
from django.core.urlresolvers import resolve
resolve(response.request["PATH_INFO"])[0].func_name

答案 1 :(得分:1)

Dave的答案涉及每次测试网址时的HTTP请求,这可能很慢。如果您只是想知道网址解析的视图,则可以在不使用Client的情况下执行此操作:

>>> from django.core.urlresolvers import get_resolver
>>> from myapp.views import func_to_test
>>> resolver = get_resolver(None)
>>> match = resolver.resolve('/some/path/')
>>> if match.func is func_to_test:
>>>    print "correct function for resolution!"

Ryan Wilcox's post on route testing详细介绍并提供了使测试更容易的技巧。