我有一个测试,其中视图使用HttpRepsonseRedirect()重定向。在我的测试中,我将字典传递给通过此HttpResponseRedirect的POST请求。
data = {...data...}
response = self.client.post(url, data)
如何检查响应HTML中是否包含字符串?我做不到:
self.assertContains(response, 'my_string')
或
self.assertIn(response, 'my_string')
是否可以通过此响应将HTML作为字符串访问HTML?
答案 0 :(得分:1)
您可以将参数follow=True
传递给测试客户端,以使其遵循重定向。然后,您可以使用assertContains
检查所需的内容。
data = {...data...}
response = self.client.post(url, data, follow=True)
self.assertContains(response, 'my_string')
答案 1 :(得分:0)
Django提供了assertion function,TestCase.assertInHtml(needle, haystack)
,您可以使用它断言给定的needle
(您的HTML字符串)在haystack
(响应中的HTML)中。宾语)。请注意,HttpResponse
的HTML内容在响应对象的content
属性中作为字节字符串提供,因此您需要像这样对它进行解码:
self.assertInHtml('my_string', response.content.decode())