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

Bas*_*nda 5 python testing django

我学习了一些Django的测试代码,我觉得assertInassertContains很相似,我读的文档,其中他们没有说任何事情assertIn或者我找不到它。

下面的这个例子检查 'john' 是否出现在 self.email.body

self.assertIn('john', self.email.body)
Run Code Online (Sandbox Code Playgroud)

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

self.assertContains(self.response, 'csrfmiddlewaretoken')
Run Code Online (Sandbox Code Playgroud)

看起来语法不同,但功能相同。因此,有什么区别?

如果您能通过一些基本示例帮助我理解这一点,我将不胜感激。

非常感谢

Naf*_*war 10

assertIn实际上是 python 内置测试套件的成员。这是对会员的正常测试。例如,您可以检查数组元素的成员资格。字典中的键等。基本上你可以将它用于所有in操作符可以使用的地方。

django 在其测试套件中添加了assertContains。它专门用于响应。这意味着您可以将视图返回的响应对象传递给它。它将评估它并检查成员资格。

您可以在相应的文档中阅读有关assertInassertContains的信息。


MyN*_*leb 6

Django 测试继承自unittestPython。

assertContains特定于Django的,并允许您评估超越了简单的额外的东西assertIn

SimpleTestCase.assertContains(response, text, count=None, status_code=200, msg_prefix='', html=False)[源代码]

断言 Response 实例产生了给定的 status_code 并且该文本出现在响应的内容中。如果提供了 count ,则文本必须在响应中准确出现 count 次。

虽然assertIn 做简单的评估

断言(第一,第二,味精=无)

assertIn(a, b) 检查 a in b