Selenium-Unittest单元测试框架

1、Unittest介绍

为什么要学习单元测试框架
测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结果的对比==测试结果
单元测试框架提供了丰富的日志:给出测试用例失败与通过的数目及执行失败的原因
常见的单元测试框架有哪些
Doctest、unittest、pytest、nose等等
Java--》junit(testng)、C++--》 googleTest、c#--》nunit

2、Unittest核心组件

3、Unittest工作原理

Testcase:一个 testcase 就是一个测试用例。Setup(测试环境的准备)、run(测试执行)、teardown(测试环境的还原)。
Testsuite(集合或套件):多个测试用例的集合就是 suite,一个suite可以包含多个测试用例,也可以嵌套 suite。
TestLoader:用来加载 testcase到testsuite 中的。
TestTestRunner:用例执行测试用例(run 方法),测试结果会保存在 TestTestresult 中。
fixture:一个测试用例环境的搭建和销毁。

 

4、Unittest单元测试用例的组织

构建单元测试用例
场景:以字符串替换举例

 

 

5、构建测试套件(优化测试用例)

单元测试用例的增多,在各个测试代码中会有很多相似的操作,考虑setUp(测试环境的准备)、tearDown(测试环境的还原)

 

6、组织多个测试用例(深度优化测试用例)

测试用例的继续优化:所有的测试用例不需要都用单独的类进行存放,该方式比较耗时,通过test开头的函数来存放测试用例。

 

7、构建测试套件

多个测试用例的集合就是suite,一个suite可以包含多个测试用例,也可以嵌套suite。

 

8、测试套件优化

执行部分测试用例

 

执行某测试类下的全部测试用例,unittest模块中提供一个makesuite

9、多个测试类的控制

 

10、执行测试

首先将StringReplaceTestCase放在单独的一个py文件中StringReplace.py
将注释放在方法内,作为方法的说明。
执行部分测试用例,创建一个test_suite.py,用户控制措施用例的执行
运行全部测试用例。

11、测试用例的跳过

修改StringReplace文件,理解skip、skipif、skipunless

12、Unittest框架总结

unittest.TestCase:TestCase类,所有测试用例类继承的基本类。class Test(unittest.TestCase):
unittest.main():使用可以方便的将一个单元测试模块变为可直接运 行的测试脚本
unittest.TestSuite():unittest框架的TestSuite()类是用来创建 测试套件的。
unittest.TextTestRunner():unittest框架的TextTestRunner()类, 通过该类下面的run()方法来运行suite所组装的测试用例,入参为 suite测试套件。
unittest.skip():装饰器,当运行用例时,有些用例可能不想执行,可用装饰器 暂时屏蔽该条测试用例。常见的用法如想调试某一测试用例,可先屏蔽其他用例
@unittest.skip(reason): skip(reason)装饰器:无条件跳过装饰的测试,并说 明跳过测试的原因。 
@unittest.skipIf(reason): skipIf(condition,reason)装饰器:条件为真时, 跳过装饰的测试,并说明跳过测试的原因。
@unittest.skipUnless(reason): skipUnless(condition,reason)装饰器:条件 为假时,跳过装饰的测试,并说明跳过测试的原因

setUp()方法用于测试用例执行前的初始化工作。如测试用 例中需要访问浏览器,可以在setUp中实例化浏览器驱动。 
tearDown():tearDown()方法用于测试用例执行之后的善后工作、关 闭浏览器。
断言方法:在执行测试用例的过程中,最终用例是否执行通过,是通 过判断测试得到的实际结果和预期结果是否相等决定的。
assertEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,相等则测试用例通 过。
assertNotEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,不相等则测试 用例通过。
assertTrue(x,[msg='测试失败时打印的信息']):断言x是否True,是True则测试用例通过。
addTest(): 方法是将测试用例添加到测试套件中。

run(): 方法是运行测试套件的测试用例,入参为suite测试套件

13、HTML报告介绍

HTMLTestRunner是Python的标准库unittest单元测试框架的一个扩 展,用于生成HTML测试报告
下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html

 

14、HTML测试结果

HTMLTestRunner.py下载地址http://tungwaiyip.info/software/HTMLTestRunner.html
HTMLTestRunner.py的存放路径,是放在C:\Users\Administrator\AppData\Local\Programs\Python37\Lib
HTMLTestRunner.py是基于python2*开发的,要想能够在python3上使用,需要修改该文件。
修改汇总: 
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第766行,将uo = o.decode('latin-1')修改成uo = e
第772行,将ue = e.decode('latin-1')修改成ue = e
第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

基于test_suite文件进行HTML报告生成,存放到D盘名为result.html

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

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

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

相关文章

livox 半固体激光雷达 gazebo 仿真 | 安装与验证

livox 半固体激光雷达 gazebo 仿真 | 安装与验证 livox 半固体激光雷达 gazebo 仿真 | 安装与验证livox 介绍安装验证 livox 半固体激光雷达 gazebo 仿真 | 安装与验证 livox 介绍 览沃科技有限公司(Livox)成立于2016年。为了革新激光雷达行业&#xf…

MySQL特点和基本语句

MySQL MySQL是一种流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,现属于甲骨文公司(Oracle)旗下产品。MySQL是基于C语言开发的,它具有高性能、可扩展性、易用性等特点,并且支持大量的用户访问。 My…

使用 Kafka 和 Cassandra 构建实时异常检测实验

异常检测是一种跨行业方法,用于发现事件流中的异常情况 - 它适用于物联网传感器、金融欺诈检测、安全、威胁检测、数字广告欺诈和许多其他应用。此类系统检查流数据以检查是否存在异常或违规行为,并在检测到时发送警报以处理这些异常并确定它们是否确实代…

C语言重点编程题——11-20

目录 ★★★★★11.编一个程序,将磁盘中当前目录下名为“ccwl. txt"的文本文件复制在同一目录下,文k件名改为“ccw2. txt 12.编一个名为countc的函数,要求如下:(1)形式参数: array 存放字符串的字符型数组名(2)功能:统计array数组中大写字母的数目;(3)返回值:字符串中…

web:[NPUCTF2020]ReadlezPHP

题目 打开页面显示如下 没发现其他的线索,查看源代码 发现一个网址,访问这个页面查看 进行代码审计 这段代码是一个简单的 PHP 类,名为 HelloPhp。它有两个公共属性 $a 和 $b,并在构造函数中将它们分别初始化为字符串 "Y-m-…

Java 设计模式之命令模式

命令模式 介绍 命令模式是一种行为类设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者(客户端&#x…

Failed to load resource: the server responded with a status of 404 ()

路径问题: 路径省略前面的http://localhost:8080/ 就行了。

中兴交换机:DHCP的配置

一、配置说明 拓扑图 S1是中兴三层核心交换机,作为DHCP Server使用,同时作为网关,PC通过自动获取IP地址接入网络 注意事项: S1全局下需要配置:IP Pool,DHCP Policy,打开DHCP功能 S1接口下需…

Leetcode700 二叉搜索树中的搜索

题意理解: 首先明确二叉搜索树的定义: 根节点的值大于左子树所有节点值,小于右子树所有节点值。 二叉搜索树有其自己的顺序,不需要刻意强调遍历顺序。 解题方法: 递归和遍历都可以用。因为是在树里按照一定的规律找一个…

工大智信智能听诊器的演化及其在现代医疗中的角色

听诊器的演化及其在现代医疗中的角色 听诊器发展史传统听诊器发展背景: 1816年,法国医生勒内拉乐内克为了避免直接将耳朵放在病人身上进行听诊,发明了初代听诊器。 从此,在长达200多年的历史当中,传统听诊器几乎都是按…

Springboot实现增删改差

一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…

2.前端--HTML标签基本概念【2023.11.25】

1.基本语法规范 HTML 标签是由尖括号包围的关键词&#xff0c;例如 <html>。HTML 标签通常是成对出现的&#xff0c;例如 和 &#xff0c;我们称为双标签。有些特殊的标签必须是单个标签&#xff08;极少情况&#xff09;&#xff0c;例如 <br />我们称为单标签。 …

大数据-之LibrA数据库系统告警处理(ALM-37012 MPPDBServer实例双机监听SOCKET异常)

告警解释 当操作系统的其它进程占用双机监听端口号时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37012 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Ins…

深度学习之基于YoloV3杂草识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在图像识别领域已经取得了显著的成果&#xff0c;其中基于YOLO&#xff08;You Only Look Once&#xff09…

C语言:求二维数组鞍点 。鞍点就是指二维数组中在该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。

分析&#xff1a; 在主函数 main 中&#xff0c;程序首先定义一个二维数组 a[5][5] 和五个整型变量 i、j、max、maxj 和 k&#xff0c;并用于寻找鞍点。然后使用 printf 函数输出提示信息。 接下来&#xff0c;程序使用两个 for 循环结构&#xff0c;从键盘输入一个 5x5 的二…

【华为OD题库-038】支持优先级的对列-java

题目 实现一个支持优先级的队列&#xff0c;高优先级先出队列&#xff0c;同优先级时先进先出。 如果两个输入数据和优先级都相同&#xff0c;则后一个数据不入队列被丢弃。 队列存储的数据内容是一个 整数。 输入描述 一组待存入队列的数据(包含内容和优先级)。 输出描述 队列…

力扣6:N字形变化

代码&#xff1a; class Solution { public:string convert(string s, int numRows){int lens.size();if(numRows1){return s;}int d2*numRows-2;int count0;string ret;//第一行&#xff01;for(int i0;i<len;id){rets[i];}//第k行&#xff01;for(int i1;i<numRows-1;…

自定义递归实现级联组件,可默认展开全部子节点

自定义递归实现级联组件&#xff0c;可默认展开全部子节点 前言 级联组件是各个UI组件库中不可或缺的组件&#xff0c;他们常作为下拉选择使用&#xff0c;可以多选或者单选&#xff0c;但是在最近开发中&#xff0c;这个组件并不能实现产品经理无理的需求&#xff08;需要默…

【云备份】配置加载文件模块

文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.hpp 配置信息设计 使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活 配置信息&am…

C++ 常见异常

关于C异常&#xff08;包括但不限于编译器异常&#xff09;先开个头&#xff0c;有空都记下来吧&#xff1a; 1&#xff1a;_DllMain12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 有效的解决办法&#xff1a; Debug版本&#xff1a; 项目-属性-链接器-输入&#xff1a;忽略特…