Unittest单元测试框架

Unittest介绍、单元测试用例的组织、测试用例的执行、测试用例的跳过

Unittest介绍

为什么要学习单元测试框架

测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结果的对比==测试结果 单元测试框架提供了丰富的日志:给出测试用例失败与通过的数目及执行失败的原因

常见的单元测试框架有哪些

Doctest、unittest、pytest、nose等等

Java--》junit(testng)、C++--》 googleTest、c#--》nunit   xunit

Unittest核心组件

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

Unittest单元测试用例的组织

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

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

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

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

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

构建测试套件

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

执行部分测试用例

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

 

 

多个测试类的控制

执行测试

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

测试用例的跳过

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

Unittest框架总结

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测试套件。

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

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

相关文章

Viewport Meta 标记:让网页适应各种设备的魔法符号

在我们用手机或平板电脑浏览网页时,你是否曾发现有些网页能够很好地适应屏幕,而有些却需要左右滑动才能完整显示内容?这就涉及到一个神奇的东西——Viewport Meta 标记。 最近本人在研究自适应的各自实现方法,比如media媒体查询、…

6个免费设计素材库,设计师都在用,赶紧收藏!

设计师应该都知道,在设计过程中找素材真的很费时间,有的时候全网翻遍都未必能找到自己想要的,以至于现在很多设计师都花钱去购买素材,你说要是拿去参赛或者商用还好,就拿平常设计来说你舍得花这个钱去买吗,…

ubuntu-base 20.04防火墙配置方法

ubuntu-base 20.04防火墙配置方法 在ubuntu-base 20.04 上配置防火墙可以使用 UFW(Uncomplicated Firewall)工具。以下是一些基本的防火墙配置命令: 1. 检查防火墙状态: sudo ufw status 2. 启用防火墙: sudo ufw…

numpy.resize(修改数据维度)

numpy.resize 函数用于调整数组的大小。它接受一个数组和一个新的形状作为参数,并返回具有新形状的新数组。如果新数组的大小大于原始数组的大小,resize 将重复原始数组的元素以填充新数组。如果新数组的大小小于原始数组的大小,则 resize 将…

亚马逊云科技Amazon Bedrock,现推出更多模型选择和全新强大功能

亚马逊云科技在re:Invent 2023上宣布推出Amazon Bedrock更多模型选择和强大功能,帮助客户更轻松地构建和规模化针对其业务定制的生成式AI应用程序。 Amazon Bedrock是一项全面托管的服务,用户可轻松访问来自AI21 Labs、Anthropic、Cohere、Meta、Stabili…

未能正确利用原型继承(js的问题)

考虑下面代码: BaseObject function(name) {if (typeof name ! "undefined") {this.name name;} else {this.name default} }; 上面代码比较简单,就是提供了一个名字,就使用它,否则返回 default: var firstObj n…

网页设计的灵感从哪来?试试这15个灵感网站

设计灵感网站是许多设计师必备的工具,因为它们提供了一个创造性的源泉,可以帮助设计师找到灵感和灵感,从而开发出惊人的设计。 推荐15个设计灵感网站,涵盖了平面设计、网页设计、UI设计等不同领域的设计。 即时设计资源广场 即…

shell学习帖子积累

.bashrc与.bash_profile区别_bashprofile和bashrc-CSDN博客 帖子2: $0 - 脚本名 $1 - 命令参数1 $# - 几个参数 $ - 参数分别是什么 $$ - 当前脚本PID $USER - 用户 $HOSTNAME - 主机名 $LINENO - 行号 $RANDOM - 随机数 $? - 返回函数结果 实例: abc.s…

Linux系统vim,gcc,g++工具使用及环境配置,动静态库的概念及使用

Linux系统vim,gcc,g工具使用及环境配置,动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.…

了解 git rebase

了解 git rebase 大多数人习惯使用 git merge 将更改从功能分支合并到主分支,但还有其他方法。我们是否曾经遇到过 git rebase 这个术语并想知道它是什么?或者我们可能听说过 rebase 和 merge ,但不确定何时使用哪个?不用担心&am…

企业架构LB-服务器的负载均衡之Haproxy实现

企业架构LB-服务器的负载均衡之HAProxy实现 学习目标和内容 1、能够通过HAProxy实现负载均衡 ###1、介绍 Introduction HAProxy, which stands for High Availability Proxy, is a popular opensource software TCP/HTTP LoadBalancer and proxying solution which can be ru…

力扣111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2 示例 2: 输入…

最大子段和问题

题目&#xff1a; 分治法求解思路&#xff1a; 代码&#xff1a; #include<iostream> using namespace std;int maxSum(int arr[], int left, int right) {int sum 0;if (left right){if (arr[left] > 0){return arr[left];}else{return 0;}}else{int center (l…

AWS攻略——子网

文章目录 分配子网给Public子网分配互联网网关创建互联网网关附加到VPC 给Public子网创建路由表关联子网 打通Public子网和互联网网关 创建Public子网下的EC2进行测试配置Private子网路由给Private子网创建路由表附加在Private子网 创建Private子网下的EC2进行测试创建实例在跳…

Java / Scala - Trie 树简介与应用实现

目录 一.引言 二.Tire 树简介 1.树 Tree 2.二叉搜索树 Binary Search Tree 3.字典树 Trie Tree 3.1 基本概念 3.2 额外信息 3.3 结点实现 3.4 查找与存储 三.Trie 树应用 1.应用场景 2.Java / Scala 实现 2.1 Pom 依赖 2.2 关键词匹配 四.总结 一.引言 Trie 树…

c++通讯录操作系统

实现功能 1、添加联系人 2、显示联系人 3、删除联系人 4、查找联系人 5、修改联系人 6、清空联系人 0、退出通讯录 //-封装函数显示该界面 如 void showmenu //-在main函数中调用封装好的函数 #include<iostream> #include<string> #define max 1000 using n…

如何使用京东商品SKU API获取商品的保修信息?

一、背景介绍 京东商品SKU API是京东开放平台提供的一套API接口&#xff0c;用于获取京东商城的商品SKU信息。保修信息是商品SKU信息中的重要组成部分&#xff0c;通过该API可以获取到商品的保修政策、保修期限等详细信息。本文将介绍如何使用京东商品SKU API获取商品的保修信…

【ClickHouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

参考1:MySQL(通过该配置实现了实时同步) 参考2:experimental MaterializedMySQL 参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql) MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中&#xff0c;并允许您对表进行I…

item_get_app_pro-根据ID取商品详情原数据接入参数和返回值说明

参数说明 pinduoduo.item_get_app_pro 公共参数 名称类型必须描述keyString是调用key&#xff08;申请调用免费测试&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cache…

JavaEE之多线程编程:1. 基础篇

文章目录 一、关于操作系统一、认识进程 process二、认识线程三、进程和线程的区别&#xff08;重点&#xff01;&#xff09;四、Java的线程和操作系统线程的关系五、第一个多线程编程 一、关于操作系统 【操作系统】 驱动程序&#xff1a; 如&#xff1a;我们知道JDBC的驱动程…