我正在研究一些Django测试代码,我发现assertIn
和assertContains
非常相似,我读了documentation,其中他们没有说任何关于assertIn
的东西,或者我找不到它。
下面的示例检查“john”是否出现在self.email.body
的内容中
self.assertIn('john', self.email.body)
类似地,此示例检查csrfmiddlewaretoken
是否出现在self.response
的内容中
self.assertContains(self.response, 'csrfmiddlewaretoken')
看起来语法不同,但功能是一样的。那么,有什么区别呢?
如果你能用一些基本的例子帮助我理解这一点,我将非常感激。
非常感谢你
2条答案
按热度按时间4c8rllxm1#
assertIn是Python内置测试套件的一员。这是对会员资格的正常测试。例如,可以检查数组元素的成员资格。字典中的一个键等。您可以将其用于
in
运算符可以用于的所有操作。assertContains是Django在其测试套件中添加的。它是专门用于响应的。这意味着你可以将视图返回的响应对象传递给它。它将评估它并检查成员资格。
您可以在各自的文档中阅读有关assertIn和assertContains的内容。
doinxwow2#
Django测试继承了Python中的
unittest
。assertContains
是Django特有的,允许你评估除了简单的assertIn
之外的其他东西:SimpleTestCase.assertContains(response,text,count=None,status_code=200,msg_prefix='',html=False)[source]
声明一个响应示例产生了给定的status_code,并且文本出现在响应的内容中。如果提供了count,则文本在响应中必须精确地出现count次.
而
assertIn
做简单的评估:assertIn(first,second,msg=None)
assertIn(a,B)检查
a in b