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

Python+Selenium+Unittest 之Unittest3(TestSuite()和TextTestRunner())

目录

1:addTest()

2、addTests()

3:discover()


        上一篇说了Unittest的一个基本的执行顺序,那如果我们想要调整用例的执行先后顺序的话,可以用TestSuite()和TextTestRunner()了,可以这么理解,比如一个班级里有50个学生(50条用例),其中有10个学生获得了评优(10条需要执行),然后需要单独叫出来领奖,然后这10个学生领奖的时候需要按照一定顺序进行排队上台(进行用例的先后顺序排列),TestSunit()的作用就可以把这10个学生叫出来并且排好队,然后这会该上台了,这时候就需要搭配上TextTestRunner()来使用了,可以把TextTestRunner()当成老师,你们用TestSunite()排好队了,然后听TextTestRunner()指挥来按顺序上台(按之前排好的顺序进行运行)。

        下面重点说下怎么对学生进行排队(怎么添加需要执行的用例)。

1:addTest()

        添加需要执行用例时,可以使用addTest()的方式一个一个的去添加,具体用法在addTest()里写上类和对应用例即可(addTest(类(方法))  )。

import unittest       #导入unittest的框架
class Atmunit_case(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def setUp(self):print("----用例开始了-----")def test_111(self):        #只能以小写test开头,一个def就可以理解成一个测试用例,但是这里的命名必须是以test开头,这个会区分大小写,必须是全部小写的testprint("用例1")    #用例内容def test_222(self):        #定义第二个测试用例,不是以test开头,这个不会被执行print("用例2")    #用例内容def ddd(self):       #写一个ddd的方法,看会不会运行print(11111)def tearDown(self):    #结束的执行print("-------执行结束了-----")if __name__ == '__main__':     #运行unittest框架suite = unittest.TestSuite()    #把TestSuite实例化suite.addTest(Atmunit_case('test_222'))   #调整执行顺序,优先执行test_222用例,括号里需要填写类名(class后面的名字)和对应的函数名(def后面的名字)suite.addTest(Atmunit_case('test_111'))   #然后执行test_11用例suite.addTest(Atmunit_case('ddd'))    #写上ddd看会不会执行(结果是会运行的,但是这样不太符合unittest的规范,最好少出现这样的写法)runner = unittest.TextTestRunner()    #实例化TextTestRunner()runner.run(suite)       #执行上述用例

执行结果为:

----用例开始了-----
用例2
-------执行结束了-----
----用例开始了-----
用例1
-------执行结束了-----
----用例开始了-----
11111
-------执行结束了-----

执行截图:

2、addTests()

        下面说下addTests()的方法,用法和addTest()没啥太大区别,这个可以把需要执行的用例提前定义下,test = (类(方法1),类(方法2),类(方法3)),然后把test传到addTests()里即可。

import unittest       #导入unittest的框架
class Atmunit_case(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def setUp(self):print("----用例开始了-----")def test_111(self):        #只能以小写test开头,一个def就可以理解成一个测试用例,但是这里的命名必须是以test开头,这个会区分大小写,必须是全部小写的testprint("用例1")    #用例内容def test_222(self):        #定义第二个测试用例,不是以test开头,这个不会被执行print("用例2")    #用例内容def ddd(self):       #写一个ddd的方法,看会不会运行print(11111)def tearDown(self):    #结束的执行print("-------执行结束了-----")if __name__ == '__main__':     #运行unittest框架suite = unittest.TestSuite()    #把TestSuite实例化testcase = (Atmunit_case('test_222'),Atmunit_case('test_111'),Atmunit_case('ddd'))    #把用例传入到testcase中suite.addTests(testcase)     #使用addTests()的方法批量添加用例runner = unittest.TextTestRunner()    #实例化TextTestRunner()runner.run(suite)       #执行上述用例

执行结果为:

----用例开始了-----
用例2
-------执行结束了-----
----用例开始了-----
用例1
-------执行结束了-----
----用例开始了-----
11111
-------执行结束了-----

执行截图;

3:discover()

        当有多个测试文件需要执行时,也可以选择discover()的方式,具体用法为:

unittest.defaultTestLoader.discover(start_dir='.',pattern="test_case*.py",top_level_dir=None)#start_dir 表示要搜索的文件路径,通常设置为 .  表示为当前目录pattern  表示要搜索的文件的名称格式,*为通配符表示任意内容,这个的意思是以test_case开头然后中间有任意内容,最后以.py结尾的文件top_level_dir  表示是否为项目的顶层目录,用于去寻找相对的导入路径,一般默认即可,或者可以不写

        比如截图中的目录,我们有test_case_01、test_case_02、test_case_03、test11_case_04这几个目录,这几个里面分别对应不同的用例。

test_case_01.py里面的内容

import unittest       #导入unittest的框架
class test_case_01(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def test_101(self):        #定义test_101的测试方法print('test_case_101')def test_102(self):        #定义test_102的测试方法print('test_case_102')

test_case_02.py里面的内容:

import unittest       #导入unittest的框架
class test_case_02(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def test_201(self):        #定义test_201的测试方法print('test_case_201')def test_202(self):        #定义test_202的测试方法print('test_case_202')

test_case_03.py里面的内容:

import unittest       #导入unittest的框架
class test_case_03(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def test_301(self):         #定义test_301的测试方法print('test_case_301')def test_302(self):         #定义test_302的测试方法print('test_case_302')

test11_case_04.py里面的内容:

import unittest       #导入unittest的框架
class test11_case_04(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架def test_401(self):         #定义test_401的测试方法print('test_case_401')def test_402(self):         #定义test_402的测试方法print('test_case_402')

testrunner.py里面的内容:

import unittest#discover = unittest.defaultTestLoader.discover(start_dir='.',pattern="test_case*.py",top_level_dir=None)#设定需要运行的用例范围discover = unittest.defaultTestLoader.discover(start_dir='.',pattern="test_case*.py")  #设定需要运行的用例范围
unittest.TextTestRunner().run(discover)  #运行测试用例

        只需要运行testrunner.py即可,他会去找符合的文件,并运行里面的测试用例(test_case开头的方法),因为按着上面的匹配方式来说,test11_case_04.py不符合匹配的条件,所以只运行了test_case_01、test_case_02、test_case_03三个文件里的用例。

运行结果为:

test_case_101
test_case_102
test_case_201
test_case_202
test_case_301
test_case_302

​    ​一般来说每个单独的功能写到一个独立的测试文件中,其命名开头最好都用test开头,这样使用discover()的方式运行运行时匹配的比较准确,discover()为最常用的​用例条件运行方式。


 如果大家在使用过程中遇到了问题,可以在文章下留言,或者关注公众号:刘阿童木的进化记录,进行留言

                   下图为公众号二维码,内容会同步发出,大家可以关注一起学习!

                                

相关文章:

Python+Selenium+Unittest 之Unittest3(TestSuite()和TextTestRunner())

目录 1:addTest() 2、addTests() 3:discover() 上一篇说了Unittest的一个基本的执行顺序,那如果我们想要调整用例的执行先后顺序的话,可以用TestSuite()和TextTestRunner()了,可以这么理解,比如一个班级…...

3D桌面端可视化引擎HOOPS Visualize如何实现3D应用快速开发?

HOOPS Visualize是一个开发平台,可实现高性能、跨平台3D工程应用程序的快速开发。一些主要功能包括: 高性能、以工程为中心的可视化,使用高度优化的OpenGL或DirectX驱动程序来充分利用可用的图形硬件线程安全的C和C#接口,内部利用…...

Vue探索之Vue2.x源码分析(二)

一.Virtual Dom 虚拟DOM是一种轻量级的抽象,它允许我们在Javascript中创建、更新和删除DOM元素。它是React等现代Javascript框架的核心概念之一。 Vue的虚拟dom是一种抽象层的概念,它使得Vue可以高效地更新Dom。虚拟Dom是通过Javascript对象来表示DOM结…...

人工智能分类算法概述

文章目录 人工智能主要分类算法决策树随机森林逻辑回归K-均值 总结 人工智能主要分类算法 人工智能分类算法是用于将数据划分为不同类别的算法。这些算法通过学习数据的特征和模式,将输入数据映射到相应的类别。分类算法在人工智能中具有广泛的应用,如图…...

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配? 我们先看来栈和堆的特点: 简单总结就是: 栈:函数局部变量,小数据 堆:大的局部变量,函数内部产生逃逸的变量,动态分配的数据&#x…...

《QT实用小工具·二十四》各种数学和数据的坐标演示图

1、概述 源码放在文章末尾 该项目实现了各种数学和数据的坐标演示图&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef FRMMAIN_H #define FRMMAIN_H#include <QWidget> class QAbstractButton;namespace Ui { class frmMain; }class fr…...

【S32K3 MCAL配置】-3.1-CANFD配置-经典CAN切换CANFD(基于MCAL+FreeRTOS)

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录(共5页精讲,基于评估板: NXP S32K312EVB-Q172,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作:...

IEC101、IEC103、IEC104、Modbus报文解析工具

一、概述 国际电工委员会第57技术委员会&#xff08;IEC TC57&#xff09;1995年出版IEC 60870-5-101后&#xff0c;得到了广泛的应用。为适应网络传输&#xff0c;2000年IEC TC57又出版了IEC 60870-5-104&#xff1a;2000《远东设备及系统 第5-104部分&#xff1a;传输规约-采…...

node res.end返回json格式数据

使用 Node.js 内置 http 模块的createServer()方法创建一个新的HTTP服务器并返回json数据&#xff0c;代码如下&#xff1a; const http require(http);const hostname 127.0.0.1; const port 3000;const data [{ name: 测试1号, index: 0 },{ name: 测试2号, index: 1 },…...

产品开发流程

产品开发流程 时间&#xff1a;2024年04月10日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 产品开发流程_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅欢迎收听小蒋聊技术的类最新章节声音“产品开发流程”。时间&#xff1a;…...

Python蓝桥杯赛前总结

1.进制转换 (1) 2进制转换为其他进制 # 2转10 int(n, 2) # 2转8 oct(int(n, 2)) # 2转16 hex(int(n, 2)) (2) 8进制转换为其他进制 #8转10 int(n, 8) #8转2 bin(int(n, 8)) #8转16 hex(int(n, 8)) (3) 10进制转换为其他进制 #10转2 bin(n) #10转8 oct(n) #10转16 hex(n) …...

20240326-1-KNN面试题

KNN面试题 1.简述一下KNN算法的原理 KNN算法利用训练数据集对特征向量空间进行划分。KNN算法的核心思想是在一个含未知样本的空间&#xff0c;可以根据样本最近的k个样本的数据类型来确定未知样本的数据类型。 该算法涉及的3个主要因素是&#xff1a;k值选择&#xff0c;距离度…...

【论文速读】| MASTERKEY:大语言模型聊天机器人的自动化越狱

本次分享论文为&#xff1a;MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots 基本信息 原文作者&#xff1a;Gelei Deng, Yi Liu, Yuekang Li, Kailong Wang, Ying Zhang, Zefeng Li, Haoyu Wang, Tianwei Zhang, Yang Liu 作者单位&#xff1a;南洋理工…...

jvm运行情况预估

相关系统 jvm优化原则-CSDN博客 执行下面指令 jstat gc -pid 能计算出一些关键数据&#xff0c;有了这些数据&#xff0c;先给JVM参数一些的初始的&#xff0c;比堆内存大小、年轻代大小 、Eden和Srivivor的比例&#xff0c;老年代的大小&#xff0c;大对象的阈值&#xff0c;…...

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

目录 代码审计-学前须知 Bluecms-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-2次注入审计分析 知识点&#xff1a; 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态开发-SQ…...

Python:如何对FY3D TSHS的数据集进行重投影并输出为TIFF文件以及批量镶嵌插值?

完整代码见 Github&#xff1a;https://github.com/ChaoQiezi/read_fy3d_tshs&#xff0c;由于代码中注释较为详细&#xff0c;因此博客中部分操作一笔带过。 01 FY3D的HDF转TIFF 1.1 数据集说明 FY3D TSHS数据集是二级产品(TSHS即MWTS/MWHS 融合大气温湿度廓线/稳定度指数/…...

CentOS 镜像下载

CentOS 镜像下载&#xff1a;https://www.centos.org/download/ 选择合适的架构&#xff0c;博主选择x86_64&#xff0c;表示CentOS7 64位系统x86架构&#xff0c;如下&#xff1a; 或者直接访问以下网站下载 清华大学开源软件镜像站&#xff1a;https://mirrors.tuna.tsin…...

yum和配置yum源

yum 以及配置yum 源。 文章目录 一、Linux 软件包管理器yum二、使用yum安装软件三、配置yum源四、yum源仓库五、lrzse 实现linux远端和本地 互传文件 一、Linux 软件包管理器yum (1)什么是yum? yum 是一个软件下载安装管理的一个软件包管理器&#xff0c;它就相当于我们手机…...

jQuery笔记 02

目录 01 jq中预定义动画的使用 02 jq中的自定义动画 03 jq的动画的停止 04 jq节点的增删改 05 属性节点的操作 06 jq中的值和内容的操作 07 jq中宽高的操作 08 jq中坐标的操作 01 jq中预定义动画的使用 jq的预定义动画: 1.显示隐藏动画 显示 : jq对象.show() 不传参数 表…...

基于Java+SpringBoot+Vue文学名著分享系统(源码+文档+部署+讲解)

一.系统概述 随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理…...

C/S医学检验LIS实验室信息管理系统源码 医院LIS源码

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化&#xff0c;检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后&#xff0c;自动生成打印报告&#xff0c;通过网络存储在数据库中&#xff0c;使医生能够通过医生工作站方便、及时地…...

liunx环境变量学习总结

环境变量 在操作系统中&#xff0c;环境变量是一种特殊的变量&#xff0c;它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量&#xff0c;特别是对重要环境变量PATH的管理和定制&#xff0c;以及与环境变量相关的函数使用。 自定义环境变…...

对于Redis,如何根据业务需求配置是否允许远程访问?

1、centos8 Redis安装的配置文件目录在哪里&#xff1f; 在 CentOS 8 中&#xff0c;默认情况下 Redis 的配置文件 redis.conf 通常位于 /etc/ 目录下。确切的完整路径是 /etc/redis.conf。 2、redis如何设置允许远程登录 修改redis.conf文件 # 继承默认注释掉的bind配置 # …...

深入分析Linux上下文与上下文切换

Linux 进程运行空间与特权等级 在 Linux 操作系统中&#xff0c;进程的运行空间被划分为内核空间和用户空间&#xff0c;这种划分是为了保护系统的稳定性和安全性。这两个空间对应着 CPU 的特权等级&#xff0c;分别为&#xff1a; Ring 0&#xff08;内核态&#xff09;Ring…...

Docker快速上手及常用命令速查

Docker快速上手 安装 在ubuntu上安装docker: sudo apt-get install docker docker -v #查看版本在centos7上安装docker&#xff1a;(docker在YUM源的Extras仓库中) yum install docker systemctl start dockerdocker常用命令速查 #查看docker信息 docker info #查看本地镜…...

学习笔记:解决拖延

1 解决拖延、减轻压力的关键心态和方法 1.1 要点梳理 拖延是因为自己一直在逃避&#xff0c;重点是要有效突破逃避圈&#xff0c;进入学习圈&#xff0c;扩展成长圈。 毒蛇曲线&#xff08;见思维导图&#xff09;中越是临近截止期限&#xff0c;拖延的焦虑越上升&#xff0…...

第一个Swift程序

要创建第一个Swift项目,请按照以下步骤操作: 打开Xcode。如果您没有安装Xcode,可以在App Store中下载并安装它。在Xcode的欢迎界面上,选择“Create a new Xcode project”(创建新Xcode项目)。在模板选择界面上,选择“App”(应用程序)。在应用模板选择界面上,选择“Si…...

Anthropic Claude 3 加入亚马逊云科技 AI“全家桶”

编辑 | 宋慧 出品 | CSDN AIGC 每天都有新动态发生。最新的消息是亚马逊在 3 月底完成了对 Anthropic 的 40 亿美元投资&#xff08;也是亚马逊 30 年来最大一笔外部投资&#xff09;&#xff0c;以及 GPT-4 最强对手的 Anthropic Claude 3 已经在亚马逊云科技 Amazon Bedrock…...

学习基于pytorch的VGG图像分类 day3

注&#xff1a;本系列博客在于汇总CSDN的精华帖&#xff0c;类似自用笔记&#xff0c;不做学习交流&#xff0c;方便以后的复习回顾&#xff0c;博文中的引用都注明出处&#xff0c;并点赞收藏原博主. 目录 VGG模型训练 1.导入必要的库 2.主函数部分 2.1使用cpu或gpu 2.2对数据…...

Spring Boot统一功能处理之拦截器

本篇主要介绍Spring Boot的统一功能处理中的拦截器。 目录 一、拦截器的基本使用 二、拦截器实操 三、浅尝源码 初始化DispatcherServerlet 处理请求&#xff08;doDispatch) 四、适配器模式 一、拦截器的基本使用 在一般的学校或者社区门口&#xff0c;通常会安排几个…...