python 断言assert

python自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断。

  • 常用

  • 这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断。-

    • assertEqual
    • assertNotEqual
    • assertTrue
    • assertFalse
    • assertIsNone
    • assertIsNotNone
  • assertEqual 和 assertNotEqual

    • assertEqual:如两个值相等,则pass
    • assertNotEqual:如两个值不相等,则pass
    • 使用方法:
      assertEqual(first,second,msg)其中firstsecond进行比较,如果相等则通过;msg为失败时打印的信息,选填;断言assertNotEqual反着用就可以了。
  • assertTrue和assertFalse

    • assertTrue:判断bool值为True,则pass
    • assertFalse:判断bool值为False,则Pass
    • 使用方法:
      assertTrue(expr,msg)其中express输入相应表达式,如果表达式为真,则pass;msg选填;断言assertFalse如果表达式为假,则pass
  • assertIsNone和assertIsNotNone

    • assertIsNone:不存在,则pass
    • assertIsNotNone:存在,则pass
    • 使用方法:
      assertIsNone(obj,msg)检查某个元素是否存在
  •  

    总结:

  • 常用
  • assertEqual(a, b) a == b
  • assertNotEqual(a, b) a != b
  • assertTrue(x) bool(x) is True
  • assertFalse(x) bool(x) is False
  • assertIs(a, b) a is b 2.7
  • assertIsNot(a, b) a is not b 2.7
  • assertIsNone(x) x is None 2.7
  • assertIsNotNone(x) x is not None 2.7
  • assertIn(a, b) a in b 2.7
  • assertNotIn(a, b) a not in b 2.7
  • assertIsInstance(a, b) isinstance(a, b) 2.7
  • assertNotIsInstance(a, b) not isinstance(a, b) 2.7
  •  
    其它


  • assertAlmostEqual(a, b) round(a-b, 7) == 0
  • assertNotAlmostEqual(a, b) round(a-b, 7) != 0
  • assertGreater(a, b) a > b 2.7
  • assertGreaterEqual(a, b) a >= b 2.7
  • assertLess(a, b) a < b 2.7
  • assertLessEqual(a, b) a <= b 2.7
  • assertRegexpMatches(s, re) regex.search(s) 2.7
  • assertNotRegexpMatches(s, re) not regex.search(s) 2.7
  • assertItemsEqual(a, b) sorted(a) == sorted(b) and works with unhashable objs 2.7
  • assertDictContainsSubset(a, b) all the key/value pairs in a exist in b 2.7
  • assertMultiLineEqual(a, b) strings 2.7
  • assertSequenceEqual(a, b) sequences 2.7
  • assertListEqual(a, b) lists 2.7
  • assertTupleEqual(a, b) tuples 2.7
  • assertSetEqual(a, b) sets or frozensets 2.7
  • assertDictEqual(a, b) dicts 2.7
  • assertMultiLineEqual(a, b) strings 2.7
  • assertSequenceEqual(a, b) sequences 2.7
  • assertListEqual(a, b) lists 2.7
  • assertTupleEqual(a, b) tuples 2.7
  • assertSetEqual(a, b) sets or frozensets 2.7
  • assertDictEqual(a, b) dicts 2.7


  • 使用时机:

    那么我们什么时候应该使用断言呢?如果没有特别的目的,断言应该用于如下情况:
    • 防御性的编程
    • 运行时对程序逻辑的检测
    • 合约性检查(比如前置条件,后置条件)
    • 程序中的常量
    • 检查文档
  • 例:防御性编程中添加断言
    在代码开始添加注释是个好的开端,但是人们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断言,我们可以同时对这块代码编写文档,如果这些断言被违反了,会直接引起一个简单而又直接的失败。

例如:
assert target in(x, y, z)
if  target ==x:  
  run_x_code()
elif  target ==y:
  run_y_code()
else:
  assert target == z
  run_z_code()
posted @ 2017-08-17 14:28  qiao1234  阅读(381)  评论(0)    收藏  举报