Python Django断言响应包含可能的字符串列表之一
我正在使用内置测试工具为我的Django应用程序编写测试。现在,我正在尝试为显示用户追随者列表的页面编写测试。当用户没有追随者时,页面将显示从字符串列表中随机选取的消息。例如:Python Django断言响应包含可能的字符串列表之一,python,django,unit-testing,django-testing,django-tests,Python,Django,Unit Testing,Django Testing,Django Tests,我正在使用内置测试工具为我的Django应用程序编写测试。现在,我正在尝试为显示用户追随者列表的页面编写测试。当用户没有追随者时,页面将显示从字符串列表中随机选取的消息。例如: NO_FOLLOWERS_MESSAGES = [ "You don't have any followers.", "Sargent Dan, you ain't got no followers!" ] 所以现在我想编写一个测试,断言响应包含这些字符串中的一个。如果我只使用一个字符串,我可以只使用
NO_FOLLOWERS_MESSAGES = [
"You don't have any followers.",
"Sargent Dan, you ain't got no followers!"
]
所以现在我想编写一个测试,断言响应包含这些字符串中的一个。如果我只使用一个字符串,我可以只使用
self.assertContains(请求“您没有任何追随者”)
但我一直在研究如何编写具有多种可能结果的测试。任何帮助都将不胜感激。您想要这份工作吗
found_quip = [quip in response.content for quip in NO_FOLLOWERS_MESSAGES]
self.assertTrue(any(found_quip))
试试这个:
if not any([x in response.content for x in NO_FOLLOWERS_MESSAGES]):
raise AssertionError("Did not match any of the messages in the request")
关于any()
:assertContains()
,使用\u assert\u contains()中的计数
因此,如果您希望保留与assertContains()
完全相同的行为,并且鉴于\u assert\u contains()
的功能不是一个微不足道的功能,您可以从上面的源代码中获得灵感,并根据您的需要调整一个
我们的assertContains()灵感来自assertContains()
通过将参数文本
作为列表传递使用,例如
self.assertContainsAny(response, NO_FOLLOWERS_MESSAGES)
self.assertContainsAny(response, NO_FOLLOWERS_MESSAGES)