【发布时间】:2011-04-09 19:41:07
【问题描述】:
在 Django testing documentation 中,他们承诺您可以“测试是否针对给定的 URL 执行了正确的视图。”
但是我没有发现如何测试执行哪个视图的任何可能性。我希望在Response class 中,但没有关于执行视图的任何内容。
提前致谢。
【问题讨论】:
标签: django unit-testing django-views django-testing
在 Django testing documentation 中,他们承诺您可以“测试是否针对给定的 URL 执行了正确的视图。”
但是我没有发现如何测试执行哪个视图的任何可能性。我希望在Response class 中,但没有关于执行视图的任何内容。
提前致谢。
【问题讨论】:
标签: django unit-testing django-views django-testing
这样就可以提取视图函数名了
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
【讨论】:
Dave 的回答涉及每次测试 url 时的 HTTP 请求,这可能会很慢。如果你只想知道一个 url 解析到什么视图,你可以不使用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 进行了更详细的介绍,并提供了使测试变得更加容易的技术。
【讨论】: