【问题标题】:Django Testing: determine which view was executedDjango 测试:确定执行了哪个视图
【发布时间】:2011-04-09 19:41:07
【问题描述】:

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

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    这样就可以提取视图函数名了

    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
    

    【讨论】:

    • 哇,这看起来有点骇人听闻,但是是的,它有效。它使用 resolve 函数来获取匹配的 url 模式。但这没有问题,因为这与 django 在解析 URL 时的工作方式相反。谢谢!
    【解决方案2】:

    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 进行了更详细的介绍,并提供了使测试变得更加容易的技术。

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2013-10-24
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多