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

 如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

简单的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()

小结

unittest断言开篇就介绍这里,另外大家也不要纠结python2或者python3,建议小伙伴们使用python3,因为python2到2020年官方就好像不会维护了!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14526.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot配置动态定时任务

1.配置ScheduledTask 主要是实现SchedulingConfigurer,动态传入cron。 package com.hzl.boot.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Propert…

多模态系列论文----最详细的多模态论文总结(BLIP、BEIT、CoCa等)

1 多模态概述 多模态指的是多种模态的信息数据,包括:文本、图像、视频、音频等。多模态任务是指需要同时处理两种或多种不同类型的数据的任务。近年来,随着深度学习技术的发展,多模态任务取得了显著的进步。特别是VIT&#xff08…

模拟Toast 自定义提示框

模拟Toast 自定义提示框 前言 为满足产品需求,发现现在的ToastUtils不是太重就是不太满足需求,这边写个简单易用的工具,几十行代码解决的问题,还要啥轮子。 功能如下: 自动消失相对锚点位置 可配置,正中间&#x…

RTOS任务切换过程中堆栈的使用情况

我们知道 Cortex-M3 系列单片机内部有双堆栈机制。即 Cortex‐M3 拥有两个堆栈指针:主堆栈(MSP)和进程堆栈(PSP)。任一时刻只能使用其中的一个。通过控制寄存器 CONTROL 中的选择位进行控制。 两个堆栈指针如下&#…

SparkJDBC性能优化指南

前言 本文以Mysql为例。Spark作为一种强大且广泛应用于大数据处理的分布式计算框架,有着出色的性能和可伸缩性。在使用Spark处理大规模数据时,往往需要与关系型数据库MySQL进行交互。然而,由于MySQL和Spark本身的特性之间存在一些差异,直接使用Spark读写MySQL的默认配置可…

JVM理论(一)基础概念

JVM概述 JVM就是二进制字节码的运行环境,负责装载字节码到其内存,解释/编译为对应平台上的机器指令执行,每条java指令在java虚拟机规范中都有详细定义,包括如何取、处理操作数等;JVM特点如下 一次编译,到处运行(各CPU的架构不同的情况下JVM为了实现跨平台,字节码指…

WSL2 及 docker开发环境搭建

WSL2 及 docker开发环境搭建 1.使能WSL 控制面板->程序->程序和功能->启动或关闭Windows功能->勾选红框中选项->确认后重启电脑  2.下载Linux Kernel Update安装包 下载地址如下, 附件已将下载的安装包作为附件形式上传,…

6月《中国数据库行业分析报告》已发布,首发空间、搜索引擎数据库【全球产业图谱】

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

高效协作助力企业发展:企业网盘在提升工作效率方面的重要作用!

企业网盘是一种专门为了企业协作工作而设计的在线文档管理平台,受到了众多企业用户的青睐与喜爱。企业网盘如何大幅提高企业协作工作效率? 1、提高文件访问效率 传统的文件共享方式往往使用邮件附件或U盘进行传递,可能会遇到文档版本不一致、…

C语言 - AES软件加解密算法

概述 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于256位的32位任意倍数。深入学习请参考《密码学》书籍,谢谢各位参阅。 验证环境&#xf…

阿里云ACE认证和华为云HCIE认证对比分析

最近有不少小伙伴私信问我,阿里云、腾讯云、华为云这几大厂商的云认证,哪一个更好,今天有空来跟大家认真地分析一下。 01-从云计算市场占有率来看 作为国内云计算市场的探路人,阿里虽然一路走来有过很多坎坷,但也不负…

Netty的事件驱动模型nio,epoll,oio各个使用场景和支持的网络通讯协议

1.首先说一下nio和epoll有什么区别 在Netty中,Epoll和NIO是两种不同的事件驱动模型,用于实现网络通信。它们在底层的实现和性能特征上有一些区别。 1. NIO(Non-blocking I/O):NIO是Java原生的非阻塞I/O模型&#xff…