当前位置: 首页 > news >正文

《爆肝整理》保姆级系列教程python接口自动化(二十三)--unittest断言——上(详解)

简介

  在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断

言方法:assertEqual、assertIn、assertTrue。想了解更多可以点击 传送门 看一下最后的小结有大致介绍。

  unittest断言计划是分上、中、下三篇有简单到复杂的给小伙伴们介绍一下,填补一下这部分的空白。

基本断言方法

基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。

序号断言方法断言描述
1assertEqual(arg1, arg2, msg=None)验证arg1=arg2,不等则fail
2assertNotEqual(arg1, arg2, msg=None)验证arg1 != arg2, 相等则fail
3assertTrue(expr, msg=None)验证expr是true,如果为false,则fail
4assertFalse(expr,msg=None)验证expr是false,如果为true,则fail
5assertIs(arg1, arg2, msg=None)验证arg1、arg2是同一个对象,不是则fail
6assertIsNot(arg1, arg2, msg=None)验证arg1、arg2不是同一个对象,是则fail
7assertIsNone(expr, msg=None)验证expr是None,不是则fail
8assertIsNotNone(expr, msg=None)验证expr不是None,是则fail
9assertIn(arg1, arg2, msg=None)验证arg1是arg2的子串,不是则fail
10assertNotIn(arg1, arg2, msg=None)验证arg1不是arg2的子串,是则fail
11assertIsInstance(obj, cls, msg=None)验证obj是cls的实例,不是则fail
12assertNotIsInstance(obj, cls, msg=None)验证obj不是cls的实例,是则fail

简单的case

1、实例,写了四个测试用例,其中第四个是失败的

2、运行结果(python3)

 

python2

3、在python2中执行的结果,中文编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出,python3正常。有时候也可以根据实际需要采用自定义异常输出,要灵活掌握。

参考代码

 1 # coding=utf-82 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3 4 #2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-4-257 @author: 北京-宏哥8 Project:学习和使用unittest框架编写断言9 '''
10 #3.导入unittest模块
11 import unittest
12 #4.编写测试用例和断言
13 
14 class Test(unittest.TestCase):
15     def test01(self):
16         '''判断 a == b '''
17         a = 1
18         b = 1
19         self.assertEqual(a, b)
20     def test02(self):
21         '''判断 a in b '''
22         a = "hello hongge"
23         b = "hello hongge and world!"
24         self.assertIn(a, b)
25 
26     def test03(self):
27         '''判断 a is True '''
28         a = True
29         self.assertTrue(a)
30 
31     def test04(self):
32         '''失败案例'''
33         a = "北京-宏哥"
34         b = "hongge"
35         self.assertEqual(a, b)
36 
37 if __name__ == "__main__":
38     unittest.main()

自定义异常输出

1、以 assertEqual 为例分析,在pycharm中通过ctrl(command)+🖱️左键我们可以定位到方法的位置:

python3

python2

2、python2翻译:如果两个对象不能相等,就返回失败,相当于 return: first==second

      python3如果你断言的 语句正确 则什么反应都没有,但是如果你出错之后 就会报出    AssertionError 并且错误可以自己填写。

3、这里除了相比较的两个参数 first 和 second,还有第三个参数 msg=None,这个 msg 参数就是遇到异常后自定义输出信息

4、参考代码

# coding=utf-8
#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行#2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-4-25
@author: 北京-宏哥
Project:学习和使用unittest框架编写断言
'''
#3.导入unittest模块
import unittest
#4.编写测试用例和断言class Test(unittest.TestCase):def test01(self):'''判断 a == b '''a = 1b = 1self.assertEqual(a, b)def test02(self):'''判断 a in b '''a = "hello hongge"b = "hello hongge and world!"self.assertIn(a, b)def test03(self):'''判断 a is True '''a = Trueself.assertTrue(a)def test04(self):'''失败案例'''a = "北京-宏哥"b = "hongge"self.assertEqual(a, b,msg='失败原因: %s!=%s'%(a,b))if __name__ == "__main__":unittest.main()

小结

  

 总结:在测试行业摸爬滚打也有十几年了,在学习的途中也是收藏了很多的学习资源,下面是软件测试到测试开发全职业生涯全套学习资料

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

http://www.lryc.cn/news/21706.html

相关文章:

  • MySQL的mvcc
  • vite:常见的配置
  • 计算机图形学:liang算法和Cyrus-Beck算法
  • React组件之间的通信方式总结(上)
  • C++17 nodiscard标记符
  • SAP 寄售业务的标准流程
  • 操作系统高频知识
  • 加载预训练模型,模型微调,在自己的数据集上快速出效果
  • VScode远程连接服务器-过程试图写入的管道不存在-could not establist connection to【已解决】
  • 电子技术——B类输出阶
  • 【老卫搬砖】034期:HarmonyOS 3.1 Beta 1初体验,我在本地模拟器里面刷短视频
  • Day901.内部临时表 -MySQL实战
  • jstatd的启动方式与关闭方式
  • _improve-3
  • C++——异常
  • MVVM 架构进阶:MVI 架构详解
  • 有没有必要考PMP证书?
  • 1 机器学习基础
  • java基础系列(六) sleep()和wait() 区别
  • Urho3D序列化
  • 企业级信息系统开发学习1.3——利用注解配置取代Spring配置文件
  • VUE DIFF算法之快速DIFF
  • 一文掌握如何轻松稿定项目风险管理【静说】
  • 操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权
  • ecology9-谷歌浏览器下-pdf.js在渲染时部分发票丢失文字 问题定位及解决
  • JavaScript Window Navigator
  • Linux基础命令-du查看文件的大小
  • 文献计量分析方法:Citespace安装教程
  • MVI 架构更佳实践:支持 LiveData 属性监听
  • LeetCode438 找到字符串中所有字母异位词 带输入和输出