如何对 django url 进行单元测试?

2024-02-19

除了我的应用程序之外,我的应用程序在所有地方都实现了 100% 的测试覆盖率urls.py。你对我如何写作有什么建议吗有意义的对我的 URL 进行单元测试?

FWIW 这个问题是在我尝试测试驱动开发时出现的,并且希望在编写代码来修复它们之前失败的测试。


一种方法是reverse https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#reverseURL 名称并验证

Example

urlpatterns = [
    url(r'^archive/(\d{4})/$', archive, name="archive"),
    url(r'^archive-summary/(\d{4})/$', archive, name="archive-summary"),
]

现在,在测试中

from django.urls import reverse

url = reverse('archive', args=[1988])
assertEqual(url, '/archive/1988/')

url = reverse('archive-summary', args=[1988])
assertEqual(url, '/archive-summary/1988/')

无论如何,您可能正在测试视图。

现在,要测试 URL 是否连接到正确的视图,您可以使用resolve https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#resolve

from django.urls import resolve

resolver = resolve('/summary/')
assertEqual(resolver.view_name, 'summary')

现在在变量中resolver (ResolverMatch https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#django.urls.ResolverMatch类实例),您有以下选项

 'app_name',
 'app_names',
 'args',
 'func',
 'kwargs',
 'namespace',
 'namespaces',
 'url_name',
 'view_name'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 django url 进行单元测试? 的相关文章

随机推荐