Python 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!" ] 所以现在我想编写一个测试,断言响应包含这些字符串中的一个。如果我只使用一个字符串,我可以只使用

我正在使用内置测试工具为我的Django应用程序编写测试。现在,我正在尝试为显示用户追随者列表的页面编写测试。当用户没有追随者时,页面将显示从字符串列表中随机选取的消息。例如:

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)