python Django中的`assertIn`和`assertContains`有什么区别?

xfyts7mz  于 2023-10-14  发布在  Python
关注(0)|答案(2)|浏览(135)

我正在研究一些Django测试代码,我发现assertInassertContains非常相似,我读了documentation,其中他们没有说任何关于assertIn的东西,或者我找不到它。
下面的示例检查“john”是否出现在self.email.body的内容中

self.assertIn('john', self.email.body)

类似地,此示例检查csrfmiddlewaretoken是否出现在self.response的内容中

self.assertContains(self.response, 'csrfmiddlewaretoken')

看起来语法不同,但功能是一样的。那么,有什么区别呢?
如果你能用一些基本的例子帮助我理解这一点,我将非常感激。
非常感谢你

4c8rllxm

4c8rllxm1#

assertIn是Python内置测试套件的一员。这是对会员资格的正常测试。例如,可以检查数组元素的成员资格。字典中的一个键等。您可以将其用于in运算符可以用于的所有操作。
assertContains是Django在其测试套件中添加的。它是专门用于响应的。这意味着你可以将视图返回的响应对象传递给它。它将评估它并检查成员资格。

您可以在各自的文档中阅读有关assertIn和assertContains的内容。

doinxwow

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

相关问题