我有一个像这样的Django url模式:
url(r'browse/state/(?P<state>\d+)$', browse_state_sites)
编写类似的测试会导致状态匹配查询错误。
def test_browse_state_county_sites(self):
resp = self.client.get('/browse/state/1')
self.assertEqual(resp.status_code, 200)
如何传递捕获组以测试路径?
答案 0 :(得分:4)
将您的网址设为name
,如下所示:
url(r'browse/state/(?P<state>\d+)$', browse_state_sites, name='state-detail')
然后在您的测试代码中使用django.core.urlresolvers.reverse
,如下所示:
resp = self.client.get(reverse('state-detail', kwargs={
'state': 12345,
}))
您可能会收到错误GET
/browse/state/1/county/1
,因为根据您提供的内容,它不匹配。 browse/state/(?P<state>\d+)$
正则表达式将匹配任何格式browse/state/<number>
的网址 - /county/1
将导致匹配失败。