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



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

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

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

self.assertContains(response, 'my_string')

self.assertIn(response, 'my_string')

有没有一种方法可以从这个响应中以字符串的形式访问HTML?

Django提供了一个断言函数TestCase.assertInHtml(needle, haystack),您可以使用它来断言给定的needle(您的HTML字符串(在haystack(来自响应对象的HTML(中。注意,HttpResponse的HTML内容是在响应对象的content属性中作为字节字符串提供的,因此您需要像这样解码:
self.assertInHtml('my_string', response.content.decode())

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

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

相关内容

  • 没有找到相关文章

最新更新