本文旨在对于个人知识的梳理以及知识的分享,如果有不足的地方,欢迎大家在评论区指出
什么是assert断言
在测试样例中,执行完测试样例之后,最后一步要判断是pass还是fail,自动化测试脚本中一般吧这种生成测试结果的方法称为断言
如何使用assert断言
- 简易Demo
当我们输入4时,可以发现程序并没有报错,而当我们输入1时,程序报错如下:# 首先assert后面需要跟布尔类型的值 if __name__ == "__main__": a = int(input("请输入a的值:")) assert a==4
可以发现AssertionError
后面并没有错误的信息,如果想要有的话,可以将上面的程序稍加修改:
这时修改后的报错(if __name__ == "__main__": a = int(input("请输入a的值:")) assert a==4, Exception("a的值不为4")
是不是清晰了好多):
- 复杂案例
assert断言一般可以用于检查某个函数的功能是否实现完整,这里我们可以用一个二分函数来举例:
这里介绍一个用于测试的第三方库def binary_search(arr, x): l, r = 0, len(arr)-1 while l < r: mid = l + r + 1>> 1 if arr[mid] > x: r = mid - 1 else: l = mid return l if arr[l]==x else -1 def test(): arr = [1, 3, 5, 6, 7] assert binary_search(arr, 3)==1 assert binary_search(arr, 8)==-1 assert binary_search(arr, -1)==-1 assert binary_search(arr, 7)==4 if __name__ == "__main__": test()
pytest
,其安装方式就是在cmd框中输入pip install -U pytest
,即可安装,对于上面的案例,是通过的,我们使用pytest 文件名
测试之后,得到的测试结果如下:
如果我们将assert binary_search(arr, 3)==1
改为assert binary_search(arr, 3)==0
,则就会报错,结果如下:
可以看出,错误信息中给出来程序返回的结果为1,而我们指定的结果为0,二者不一致,这样可以更加方便我们的调试