python接口自动化测试 —— unittest框架suite、runner详细使用!

test suite

  • 测试套件,理解成测试用例集
  • 一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合
  • 当运行测试套件时,则运行里面添加的所有测试用例

test runner

  • 测试运行器
  • 用于执行和输出结果的组件

test suite、test runner基础使用

单元测试类

 1 # 创建单元测试类,继承unittest.TestCase
 2 class testCase(unittest.TestCase):
 3 
 4     # 测试case
 5     def test_01(self):
 6         print("test01")
 7 
 8     def test_03(self):
 9         print("test03")
10 
11     def test_04(self):
12         print("test04")
13 
14     def test_05(self):
15         print("test05")

主函数

 1 if __name__ == '__main__':
 2     # 实例化测试套件
 3     suite = unittest.TestSuite()
 4     # 实例化第二个测试套件
 5     suite1 = unittest.TestSuite()
 6     # 添加测试用例 - 方式一
 7     suite.addTest(testCase('test_03'))
 8     suite.addTest(testCase('test_01'))
 9     suite1.addTest(testCase('test_03'))
10     suite1.addTest(testCase('test_01'))
11     # 添加测试用例 - 方式二
12     testcase = (testCase('test_05'), testCase('test_04'))
13     suite.addTests(testcase)
14     # 测试套件添加测试套件
15     suite.addTest(suite1)
16     # 实例化TextTestRunner类
17     runner = unittest.TextTestRunner()
18     # 运行测试套件
19     runner.run(suite)

运行结果

 1 test03
 2 test01
 3 test05
 4 test04
 5 test03
 6 test01
 7 ......
 8 ----------------------------------------------------------------------
 9 Ran 6 tests in 0.000s
10 
11 OK

包含知识点

  • 使用测试套件时,测试用例的执行顺序可以自定义,按照添加的顺序执行
  • 有两种添加测试用例的方式,推荐方式二,代码更少更快捷
  • ,传入的 tests 可以是list、tuple、set

addTests(tests)

  • 添加的测试用例格式是:

单元测试类名(测试用例名)

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

测试用例批量执行

单元测试类文件

前三个文件是包含了单元测试类的文件,第四个文件是负责运行所有单元测试类,不包含测试用例

列举某个单元测试类文件代码

 1 # 创建单元测试类,继承unittest.TestCase
 2 class testCase02(unittest.TestCase):
 3 
 4     # 测试case
 5     def test_07(self):
 6         print("testCase02 test07")
 7 
 8     def test_06(self):
 9         print("testCase02 test06")
10 
11     def test_11(self):
12         print("testCase02 test11")

test_run.py 代码

批量运行测试用例方式一:

 1 import unittest
 2 from learn.unittestLearning import test_case02
 3 from learn.unittestLearning.test_case03 import testCase03
 4 
 5 if __name__ == '__main__':
 6     # 通过模块
 7     testcase02 = unittest.TestLoader().loadTestsFromModule(test_case02)
 8     # 通过单元测试类
 9     testcase03 = unittest.TestLoader().loadTestsFromTestCase(testCase03)
10     # 通过模块字符串
11     testcase04 = unittest.TestLoader().loadTestsFromName('learn.unittestLearning.test_case04')
12     # 测试用例集
13     tests = [testcase02, testcase03, testcase04]
14     # 创建测试套件
15     suite = unittest.TestSuite(tests)
16     # 运行测试套件
17     unittest.TextTestRunner(verbosity=2).run(suite)

包含知识点

  • :testCaseClass输入单元测试类,但需要先import

loadTestsFromTestCase(testCaseClass)

  • :module输入单元测试类所在模块,也需要import

loadTestsFromModule(module, pattern=None)

  • :name是一个string,需满足以下格式: module.class.method ,可以只到输入到class

loadTestsFromName(name, module=None)

  • :表示测试结果的信息详细程,一共三个值,默认是1
    • 0 (静默模式):你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80
    • 1 (默认模式):非常类似静默模式 只是在每个成功的用例前面有个 每个失败的用例前面有个 F
    • 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息

verbosity

批量运行测试用例方式二(推荐!!):

1 import unittest
2 
3 if __name__ == '__main__':
4     # 需要运行的单元测试文件目录
5     test_path = './'
6     # 实例化defaultTestLoader
7     discover = unittest.defaultTestLoader.discover(start_dir=test_path, pattern="test_case*.py")
8     # 运行测试用例集
9     unittest.TextTestRunner().run(discover)

优点:是不是简洁。。是不是很快??只需三行代码!!

包含知识点

  • :写需要运行的单元测试文件目录

start_dir

  • :单元测试文件的匹配规则,默认是 test*.py ,可根据自己的命名规则修改此正则

pattern

  • 方法可自动根据测试目录start_dir 匹配查找测试用例文件 test*.py ,并将查找到的测试用例组装到测试套件,因此可以直接通过 run() 方法执行 discover

discover()

批量执行测试用例的结果

 1 testCase02 test06
 2 testCase02 test07
 3 testCase02 test11
 4 testCase03 test05
 5 testCase03 test08
 6 testCase03 test12
 7 testCase04 test02
 8 testCase04 test04
 9 testCase04 test13
10 .........
11 ----------------------------------------------------------------------
12 Ran 9 tests in 0.000s
13 
14 OK

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前端素材】推荐优质后台管理系统Salreo平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时,可以将其功能和定义进一步细分,以便更好地理解其在不同方面的作用和实际运作。 1. 结构层次 在结构层次上,后台管理系统可以分为以下几个部分: a. 辅助功能模块&#…

PostgreSQL:开源巨人的崛起和不可阻挡的发展

PostgreSQL:开源巨人的崛起和不可阻挡的发展 PostgreSQL是一款开源的关系型数据库管理系统(RDBMS),以其强大的功能和持续的发展势头在数据库领域崭露头角。本文将探讨为什么PostgreSQL的发展势不可挡,从开源精神和强大…

GridView 演示(P28 5.4GridView)

一、目标效果 如下图所示,我们通过 GridView 新建100个子项,每个子项上写有自己的 index。 二、具体实现代码 1. Main.qml import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("GridView 演示")GridView{anchors.fill…

探索NebulaGraph:一个开源分布式图数据库的技术解析

欢迎关注微信公众号:一休哥助手。多种功能等待你的使用。1. 介绍 NebulaGraph的定位和用途 NebulaGraph是一款开源的分布式图数据库,专注于存储和处理大规模图数据。它的主要定位是为了解决图数据存储和分析的问题,能够处理节点和边数量巨大…

林浩然与杨凌芸的Scala编程历险记:变量与数据类型的魔法对决

林浩然与杨凌芸的Scala编程历险记:变量与数据类型的魔法对决 在Scala世界的梦幻殿堂中,两位英勇的程序员——林浩然和杨凌芸正准备开启一场代码之旅。这次,他们将深入探索Scala王国中的变量奥秘与数据类型丛林。 一、变量声明篇 &#xff0…

【DDD】学习笔记-领域驱动设计体系

从统一语言到限界上下文,从限界上下文到上下文映射,从领域分析建模到领域设计建模,再从领域设计建模到领域实现建模,我将软件架构设计、面向对象设计、场景驱动设计和测试驱动开发有机地融合起来,贯穿于领域驱动设计的…

数据结构:循环队列

一、队列的概念 操作受限的线性表,允许在队列的一端执行入队操作,另一端执行出队操作 先进先出(FIFO) 1.顺序队列 物理结构连续,依赖于数组实现 队列中有一个队头指针和队尾指针,队头指针保存每次要出队的元素,队…

使用Jenkins部署前端Vue项目和后端Java服务

Jenkins安装相关插件,供后续使用(Dashboard - Manage Jenkins - Plugins) Maven Integration plugin https://plugins.jenkins.io/maven-plugin CloudBees Docker Build and Publish pluginhttps://plugins.jenkins.io/docker-build-publish…

代码随想录算法训练营第64天/最后一天 | 84.柱状图中最大的矩形

今日任务 84.柱状图中最大的矩形 84.柱状图中最大的矩形 - Hard 题目链接:. - 力扣(LeetCode) 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾…

Opencv实战(3)详解霍夫变换

霍夫变换 Opencv实战系列指路前文: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 文章目录 霍夫变换1.霍夫线变换1.1 原理1.2 HoughLines() 2.霍夫圆变换2.1 原理2.2 HoughCircles() 最基本的霍夫变换是从黑白图像中检测直线(线段) 霍夫变换(Hough Transform…

第三百七十回

文章目录 1. 概念介绍2. 使用方法2.1 获取所有时区2.2 转换时区时间 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

Unity中URP下实现水体(水面反射)

文章目录 前言一、原理1、法一:使用立方体纹理 CubeMap,作为反射纹理使用2、法二:使用反射探针生成环境反射图,所谓反射的采样纹理 二、实现水面反射1、定义和申明CubeMap2、反射向量需要什么3、计算 N ⃗ \vec{N} N 4、计算 V ⃗…

linux服务器调度数据库的存储过程

1、需要安装数据库的客户端 2、安装sqlplus 3、编写sh脚本 脚本内容如下: 4、设置调度任务

React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)

一、react UI框架Antd使用 1.下载模块 npm install antd -S 2.引入antd的样式 import ../node_modules/antd/dist/reset.css; 3.局部使用antd组件 import {Button, Calendar} from antd; import {PieChartTwoTone} from ant-design/icons; {/* 组件汉化配置 */} import l…

[机器视觉]halcon应用实例 边缘检测2

一个学习找边的实例2,用于练习相关算子,这个版本比较简单,少了一些对图像的处理。所以主要是用于练习思路和相关算子。只有用了,练了你在脑子里心才有收获。 边缘检测的步骤图解 代码 *直线找边 *清空屏幕,显式控制图…

express+mysql+vue,从零搭建一个商城管理系统5--用户注册

提示:学习express,搭建管理系统 文章目录 前言一、新建user表二、安装bcryptjs、MD5、body-parser三、修改config/db.js四、新建config/bcrypt.js五、新建models文件夹和models/user.js五、index.js引入使用body-parser六、修改routes/user.js七、启动项…

Linux------进程地址空间

目录 一、进程地址空间 二、地址空间本质 三、什么是区域划分 四、为什么要有地址空间 1.让进程以统一的视角看到内存 2.进程访问内存的安全检查 3.将进程管理与内存管理进行解耦 一、进程地址空间 在我们学习C/C的时候,一定经常听到数据存放在堆区、栈区、…

Linux shell:补充命令的使用

目录 一.导读 二.正文 三.结语 一.导读 上一篇介绍了脚本的简单概念以及使用,现在补充一些命令。 二.正文 目前处于全局目录,通过mkdir创建名我为day01的文件。 通过cd命令day01 切换至day01文件当中。 使用vim文本编辑器文件名(firstdir&…

Dledger部署RocketMQ高可用集群(9节点集群)

文章目录 🔊博主介绍🥤本文内容规划集群准备工作节点0配置(ip地址为192.168.80.101的机器)节点1配置(ip地址为192.168.80.102的机器)节点2配置(ip地址为192.168.80.103的机器)在所有…

基于springboot实现鞋类商品购物商城系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现鞋类商品购物商城系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xf…
最新文章