Django测试:如何从HTTPResponseRedirect对象获取html字符串

时间:2018-11-15 11:36:14

标签: django testing httpresponse

我有一个测试,其中视图使用HttpRepsonseRedirect()重定向。在我的测试中,我将字典传递给通过此HttpResponseRedirect的POST请求。

data = {...data...}
response = self.client.post(url, data)

如何检查响应HTML中是否包含字符串?我做不到:

self.assertContains(response, 'my_string')

self.assertIn(response, 'my_string')

是否可以通过此响应将HTML作为字符串访问HTML?

2 个答案:

答案 0 :(得分:1)

您可以将参数follow=True传递给测试客户端,以使其遵循重定向。然后,您可以使用assertContains检查所需的内容。

data = {...data...}
response = self.client.post(url, data, follow=True)
self.assertContains(response, 'my_string')

答案 1 :(得分:0)

Django提供了assertion functionTestCase.assertInHtml(needle, haystack),您可以使用它断言给定的needle(您的HTML字符串)在haystack(响应中的HTML)中。宾语)。请注意,HttpResponse的HTML内容在响应对象的content属性中作为字节字符串提供,因此您需要像这样对它进行解码:

self.assertInHtml('my_string', response.content.decode())