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

时间:2019-04-28 16:41:52

标签: python django testing

我正在研究一些Django测试代码,发现assertInassertContains非常相似,我读了documentation,其中他们没有对assertIn说什么,也许我找不到

下面的示例检查self.email.body的内容中是否出现'john'

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

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

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

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

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

非常感谢您

2 个答案:

答案 0 :(得分:2)

Django测试继承自Python中的unittest

assertContainsspecific to Django,可让您评估除简单的assertIn之外的其他内容:

  

SimpleTestCase.assertContains(响应,文本,计数=无,status_code = 200,msg_prefix ='',html = False)[源代码]

     
    

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

  

assertIn does simple evaluation时:

  

assertIn(first,second,msg = None)

     
    

assertIn(a,b)检查a in b

  

答案 1 :(得分:1)

assertIn 实际上是python内置测试服的成员。这是对成员资格的正常测试。例如,您可以检查数组元素的成员资格。字典等中的键。基本上,public static void DetectCops() { Entity []vehicles; Entity []officers; vehicles = World.GetEntities(Game.LocalPlayer.Character.Position, 50f, GetEntitiesFlags.ConsiderGroundVehicles); if (vehicles.Any(entity => entity.Model == "POLICE") { } } 运算符可以使用的所有键都可以使用它。

django在其测试服中添加了

assertContains 。它专门用于响应。这意味着您可以传递视图返回的响应对象。它将对其进行评估,然后检查其成员身份。

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