面向对象编程之断言assert

面向对象编程之断言assert

还是熟悉的八股文

断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

使用断言可以创建更稳定、品质更好且 不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit/JunitX)。

除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序中得到维护的极好的方法。

使用断言使我们向按契约式设计更近了一步。

断言可以有两种形式

1.assert Expression1

2.assert Expression1:Expression2

其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

由于程序员的问题,断言的使用可能会带来副作用 ,例如:

boolean isEnable=false;

//...

assert isEnable=true;

这个断言的副作用是因为它修改了程序中变量的值并且未抛出错误,这样的错误如果不细心的检查是很难发现的。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它来测试断言是否打开。

直接上代码:(很简单就稍微写两段)

'''
assert:
用于判断代码是否符合执行预期!--也可以说是否符合逻辑!!
只有代码的执行结果为真才能正确执行!否则直接报错

问题1:assert到底有啥用?
答:1、主要用作单元测试,调用接口,结合assert做一个自动化脚本,自动的对每个接口都进行测试,测试接口返回的是否是符合预期的结果
2、当别人调用你的接口的时候,你的接口要求他调用时必须传递指定的关键参数,等他传递进来时,你就可以用assert语句判断他传递的参数是否符合预期
'''
d=[1,2,3]
assert len(d)>3

assert:
用于判断代码是否符合执行预期!--也可以说是否符合逻辑!!
只有代码的执行结果为真才能正确执行!否则直接报错

问题1:assert到底有啥用?
答:1、主要用作单元测试,调用接口,结合assert做一个自动化脚本,自动的对每个接口都进行测试,测试接口返回的是否是符合预期的结果
2、当别人调用你的接口的时候,你的接口要求他调用时必须传递指定的关键参数,等他传递进来时,你就可以用assert语句判断他传递的参数是否符合预期

断言语句不是永远会执行,可以屏蔽也可以启用

因此:

1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行

2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天的学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值