python的assert用法_python的assert用法

断言语句和 if 分支有点类似,它用于对一个 bool 表达式进行断言,如果该 bool 表达式为 True,该程序可以继续向下执行;否则程序会引发 AssertionError 错误。

断言格式 : assert+空格+要判断语句+双引号“报错语句”

一、断言的常见用途

那么我们什么时候应该使用断言呢?如果没有特别的目的,断言应该用于如下情况:

防御性的编程

运行时对程序逻辑的检测

合约性检查(比如前置条件,后置条件)

程序中的常量

检查文档

二、assert基础语法1

s_age = input("请输入您的年龄:")

age=int(s_age)assert 20 < age < 80

print("您输入的年龄在20和80之间")

上面程序中粗体字代码断言 age 必须位于 20 到 80之间。运行上面程序,如果输入的 age 处于执行范围之内,则可看到如下运行过程:

运行结果:

请输入您的年龄:23您输入的年龄在20和80之间

如果输入的 age 不处于 20 到 80之间,将可以看到如下运行过程:

运行结果:

请输入您的年龄:1Traceback (most recent call last):

File"C:\Users\mengma\Desktop\1.py", line 3, in

assert 20 < age < 80AssertionError

三、assert基础语法2

s_age = input("请输入您的年龄:")

age = int(s_age)

assert 20 < age < 80, "断言错误提示:年龄不在范围之内!"

print("您输入的年龄在20和80之间")

上面程序中粗体字代码断言 age 必须位于 20 到 80之间。运行上面程序,如果输入的 age 处于执行范围之内,则可看到如下运行过程:

运行结果:

请输入您的年龄:23您输入的年龄在20和80之间

如果输入的 age 不处于 20 到 80之间,将可以看到如下运行过程:

运行结果:

请输入您的年龄:1

Traceback (most recent call last):

File "C:/Users/Administrator/Desktop/json/flaskAI/day9020190712/test1.py", line 10, in

assert 20 < age < 80, "断言错误提示:年龄不在范围之内!"

AssertionError: 断言错误提示:年龄不在范围之内!

四、断言的自动化测试脚本

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

常用断言:

assertEqual

assertNotEqual

assertTrue

assertFalse

assertIsNone

assertIsNotNone

五、assertEqual 和 assertNotEqual

assertEqual:如两个值相等,则pass

assertNotEqual:如两个值不相等,则pass

使用方法:

assertEqual(first,second,msg)其中first与second进行比较,如果相等则通过;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)isTrue

assertFalse(x) bool(x)isFalse

assertIs(a, b) ais b 2.7assertIsNot(a, b) ais not b 2.7assertIsNone(x) xis None 2.7assertIsNotNone(x) xis not None 2.7assertIn(a, b) ain b 2.7assertNotIn(a, b) anot in b 2.7assertIsInstance(a, b) isinstance(a, b)2.7assertNotIsInstance(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.7assertGreaterEqual(a, b) a>= b 2.7assertLess(a, b) a< b 2.7assertLessEqual(a, b) a<= b 2.7assertRegexpMatches(s, re) regex.search(s)2.7assertNotRegexpMatches(s, re)not regex.search(s) 2.7assertItemsEqual(a, b) sorted(a)== sorted(b) and works with unhashable objs 2.7assertDictContainsSubset(a, b) all the key/value pairs in a exist in b 2.7assertMultiLineEqual(a, b) strings2.7assertSequenceEqual(a, b) sequences2.7assertListEqual(a, b) lists2.7assertTupleEqual(a, b) tuples2.7assertSetEqual(a, b) setsor frozensets 2.7assertDictEqual(a, b) dicts2.7assertMultiLineEqual(a, b) strings2.7assertSequenceEqual(a, b) sequences2.7assertListEqual(a, b) lists2.7assertTupleEqual(a, b) tuples2.7assertSetEqual(a, b) setsor frozensets 2.7assertDictEqual(a, b) dicts 2.7

九、防御性编程中添加断言实例

在代码开始添加注释是个好的开端,但是人们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断言,我们可以同时对这块代码编写文档,如果这些断言被违反了,会直接引起一个简单而又直接的失败。

target = 5x= 1y= 2z= 3

defrun_x_code():print(1)defrun_y_code():print(2)defrun_z_code():print(3)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()

打印结果:

# target= 5 时Traceback (most recent call last):

File"C:/Users/Administrator/Desktop/json/flaskAI/day9020190712/test1.py", line 31, in

assert target in(x, y, z)

AssertionError

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值