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

Python自动化测试实战篇(5)优化selenium+unittest+ddt,搞定100条测试用例只执行前50条

在这里插入图片描述
这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述
Python自动化测试实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功

Python自动化测试实战篇(2)unittest实现批量接口测试,并用HTMLTestRunner输出测试报告

Python自动化测试实战篇(3)优化unittest批量自动化接口测试代码,ddt驱动+yaml实现用例调用,输出HTMLTestRunner测试报告
Python自动化测试实战篇(4)selenium+unttest+ddt实现自动化用例测试,模拟用户登陆点击交互测试,Assert捕获断言多种断言

Python自动化测试实战篇(5)优化selenium+unittest+ddt,搞定100条测试用例只执行前50条

  • 1.准备数据
  • 2.写代码
    • 1.导入包
    • 2.导入文件地址
    • 3.定义一个函数用于调用和传参
    • 4.输出用例测试报告
    • 5.完整代码

一开始我想控制限制需要多少条用例执行多少条的方法有两种,一种就是在yaml或csv中写入多少条用例,这样就可以控制我有多少条用例去执行,不过这种操作也是不太行就是无法控制用例在执行100条中前50条这样。
在这里插入图片描述
于是我想到第二种方法就是在unttest中用suit.addTests中控制执行第多少条用例,只要把名字输进去就行,然后就可以控制指定第几条跑到第几条

但是这个方法还是有不足之处就是用例一旦多起来就无法再去控制用例在执行100条中前50条这样,那样就要写一堆进去,非常复杂和浪费时间
在这里插入图片描述
我后面又想到了一个方法就是用for循环来写和执行,那么这样就可以了,可是一开始执行时我就遇到一个麻烦,我无法从已经写好的用例中用for循环遍历获取值。查询了unttest的文档和搜索问题后发现discover这个方法

Unittest支持简单的Test Discovery。为了与Test Discovery兼容,所有的测试文件都必须是从项目的顶级目录中导入的模块或包(这意味着它们的文件名必须是有效的标识符)。Test Discovery是在testloader.discover()中实现的,但是也可以从命令行中使用

python -m unittest discover

这个命令可以直接执行文件夹中所有的用例,只要是之前生成过的 HTMLTestRunner输出过得用例
在这里插入图片描述

也可以指定py文件类型的测试用例进行测试

python -m unittest discover D:\pythonpj\pytest “test_2.py”

语法是python -m unittest discover 要查找用例的目录 “用例名称”
这样就行了,但是这个方法有个坏处就是无法识别需要导入其他包的方法,比如用了yaml包和xlrd这种就会出现错误代码
所以这个方法也可以用在我们的代码中,我可以用这个方法去遍历里面的用例这样我就可以做到100条用例只执行前50条的操作。

1.准备数据

沿用前面的数据用复制粘贴,yaml搞到100条用例
在这里插入图片描述
生成之后需要再生成一个100条的用例,yaml数据准备好后,生成用例代码沿用之前文章的代码直接生成就可以
Python自动化测试实战篇(3)优化unittest批量自动化接口测试代码,ddt驱动+yaml实现用例调用,输出HTMLTestRunner测试报告

2.写代码

1.导入包

import unittest
from HTMLTestRunner3_New import HTMLTestRunner

2.导入文件地址

report是输出html报告的地址
path是你自己执行文件.py所在的地址

report = r'D:\pythonpj\pytest\2023-02-18-30-32测试报告.html'
path = 'D:\pythonpj\pytest'

3.定义一个函数用于调用和传参

def kc_runner(n):

使用unittest的搜索本地执行文件的语法,start_dir就是初始地址就是文件所在目录地址

kcunt = unittest.defaultTestLoader.discover(start_dir=path,pattern='g2.py')

pattern就是执行文件这里执行文件可以是多个,如果你你想要同个目录下多个名字的g开头的执行文件就可以用g*.py开头,或者*g.py都可以
在这里插入图片描述

加载用例

suit = unittest.TestSuite()

写入文件

f = open(report,'wb')

输出HTMLTESTRunner的用例报告

run = HTMLTestRunner(stream=f,title='测试用例',description='执行情况如下',tester='yourname')

创建一个for循环将遍历好的值放入

t1=[]t2=[]for i in kcunt:for j in i:for l in j:t1.append(l)

添加用例判断,如果用例在传入值的范围内就执行不然就不执行

 if len(t1)<=n:suit.addTests(t1)run.run(suit)else:for a in range(n):t2.append(t1[a])suit.addTests(t2)run.run(suit)

最后写一个主函数

if __name__ == '__main__':kc_runner(50)

4.输出用例测试报告

可以看到目前已经执行了50条用例,我有100条用例,那么就跟我的需求是一致,如果多个测试用例存在的情况下也是50条,不过会分开执行,这个分出多少就看用例内有多少条,少的话就是全部执行,然后再另一个多的按你给的测试条数进行执行。一样的话应该就是平均分配
在这里插入图片描述

5.完整代码

import unittest
from HTMLTestRunner3_New import HTMLTestRunner
report = r'D:\pythonpj\pytest\2023-02-18-30-32测试报告.html'
path = 'D:\pythonpj\pytest'
def kc_runner(n):kcunt = unittest.defaultTestLoader.discover(start_dir=path,pattern='g*.py')suit = unittest.TestSuite()f = open(report,'wb')run = HTMLTestRunner(stream=f,title='测试用例',description='执行情况如下',tester='yourname')t1=[]t2=[]for i in kcunt:for j in i:for l in j:t1.append(l)if len(t1)<=n:suit.addTests(t1)run.run(suit)else:for a in range(n):t2.append(t1[a])suit.addTests(t2)run.run(suit)
if __name__ == '__main__':kc_runner(50)

在这里插入图片描述

相关文章:

Python自动化测试实战篇(5)优化selenium+unittest+ddt,搞定100条测试用例只执行前50条

这些是之前的文章&#xff0c;里面有一些基础的知识点在前面由于前面已经有写过&#xff0c;所以这一篇就不再详细对之前的内容进行描述 Python自动化测试实战篇&#xff08;1&#xff09;读取xlsx中账户密码&#xff0c;unittest框架实现通过requests接口post登录网站请求&…...

C语言--数据的存储2

目录前言练习有符号类型与无符号类型char类型的取值范围有符号char无符号char有符号与无符号类型混合运算有符号无符号类型形成的bugchar类型取值范围应用浮点型在内存中的存储浮点数的存储浮点数存储规则浮点数取出规则前言 上篇文章我们讲解了数据类型&#xff0c;类型的基本…...

Ubuntu 安装 Qt5.7.0

下载 地址&#xff1a;https://download.qt.io/https://download.qt.io/ 文件夹说明&#xff1a; snapshots&#xff1a;预览版&#xff0c;该文件夹中包含最新的测试版本。 online&#xff1a;在线安装包。 official_releases&#xff1a;最终发布版。 new_archive&#…...

“世界”的伊利,“三难”的潘刚

&#xff08;图片来源于网络&#xff0c;侵删&#xff09; 来源 | 螳螂观察 文 | 叶小安 一棵草&#xff0c;一头牛&#xff0c;到一杯牛奶&#xff0c;乳品如何守住舌尖上的安全&#xff1f; 央视财经频道专访中&#xff0c;伊利集团董事长兼总裁潘自信满满地介绍了现代智…...

【新】华为OD机试 - 开心消消乐(Python)

开心消消乐 题目 给定一个 N 行 M 列的二维矩阵,矩阵中每个位置的数字取值为 0 或 1,矩阵示例如: 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1现需要将矩阵中所有的 1 进行反转为 0,规则如下: 当点击一个 1 时,该 1 被反转为 0,同时相邻的上、下、左、右,以及左上、左下、右上…...

山东大学2022-2023数据仓库挖掘期末考题回忆

2023.2.14 一、 1.数据预处理的过程和解决问题 2.什么是离群点&#xff0c;检测离群点的四个方法 3.数据仓库的四个特点&#xff0c;画出数据仓库结构图 4.维度归约的两个方法及区别。 二、 两个模型用来预测新冠病毒的阳性和阴性 1.分别求准确率&#xff0c;精确率&#xff0c…...

SSM整合

SSM整合 ContextLoaderListener Spring提供了监听器ContextLoaderListener&#xff0c;实现ServletContextListener接口&#xff0c;可监听 ServletContext的状态&#xff0c;在web服务器的启动&#xff0c;读取Spring的配置文件&#xff0c;创建Spring的IOC容器。 web 应用中…...

Android平台版本所对应的 API 级别

平台版本API级别版本号备注Android 1333TIRAMISU平台亮点Android 1232S_V2平台亮点31S平台亮点Android 1130R平台亮点Android 1029Q平台亮点Android 928P平台亮点Android 8.127O_MR1平台亮点Android 8.026O平台亮点Android 7.1.1Android 7.125N_MR1平台亮点Android 7.024N平台亮…...

入职字节外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…...

中创教育PMP分享,复盘没效果?该怎么办

复盘的清单框架 一、现在情况如何 二、当初是怎么决定的 三、让我们再审视下思考的前提 四、复盘他人 复盘没效果&#xff0c;我们可以试试下面的提问&#xff1a; 一、现在情况如何 现在做到什么程度? 当时定的目标是多少? 现在的结果和目标对比处于什么状态? 有没…...

Kubelet监控指标说明

Probe路径 含义&#xff1a;kubelet以及kubelet监控的Pod的存活性请求路径&#xff1a;“/metrics/probes”指标 名称类型含义upGauge服务是否存活prober_probe_totalCounter按结果计算容器的活动探测、就绪探测或启动探测的累计数目以及存活性结果 Metrics路径 含义&#x…...

python中的数据类型(价值6980的全能工程师课程笔记)

概述 python数据类型主要分为以下七大类: Numbers(数字) Boolean(布尔) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Set(集合) Python 的七个标准数据类型中: 不可变数据类型(4 个):Number(数字)、Boolean(布尔)、String(字符串)、T…...

Tomcat 配置IPV6

文章目录一、场景二、tomcat开启ipv6三、ipv6环境配置四、访问总结一、场景 我们在linux下安装一个tomcat&#xff0c;启用ipv6的方式&#xff0c;然后在windows下用浏览器访问这个tomcat 二、tomcat开启ipv6 在server.xml配置文件的里面加上 address”[::]” &#xff0c;这…...

JavaEE——MyBatis的简单介绍和使用

MyBatis是什么 MyBatis是一个支持普通SQL查询&#xff0c;存储过程以及高级映射的持久层框架&#xff0c;他消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索&#xff0c;使用简单的XML或注解进行配置和原始映射&#xff0c;将接口和Java的POJO映射成数据库中的记…...

主数据管理平台如何进行模型管理

企业管理主数据&#xff0c;模型管理尤为重要。在对主数据进行建模操作时&#xff0c;既要保证数据通用性、安全性&#xff0c;又要符合企业的业务需求。今天小亿带你认识一下亿信华辰睿码主数据管理平台里的主数据模型管理。 主数据模型分类 一款专业的主数据管理平台&#…...

在 Kubernetes 上运行《我的世界》

最近给小朋友装上了叨叨许久的 Minecraft&#xff08;我的世界&#xff09;&#xff0c;为了体验安装的是开源启动器 HMCL。其实这游戏我也关注比较久了&#xff0c;不过感觉太耗时间。但被小朋友拉上一起玩&#xff0c;便研究了下自建服务器。GitHub 发现已经有人做好了 Minec…...

万字长文掌握Python高并发

文章目录0 前言1 并发、并行、同步、异步、阻塞、非阻塞1.1 并发1.2 并行1.3 同步1.4 异步1.5 阻塞1.6 非阻塞2 多线程2.1 Python线程的创建方式2.1.1 方式一2.1.2 方式二 继承Thread2.1.3 通过线程池创建多线程2.2 聊聊GIL2.2.1 Python线程与操作系统线程的关系2.3 线程同步2.…...

高性能办公娱乐迷你主机——Maxtang大唐AMD5600U

今天给大家介绍一款AMD5600U迷你主机&#xff0c;说起这款处理器大家应该并不陌生&#xff0c;像联想小新、YOGA以及ThinkBook等很多款用的都是这个型号&#xff0c;不过笔记本的价格基本都在3999-4999这个价位区间&#xff0c;同样的处理器&#xff0c;笔记本卖那么贵&#xf…...

牛客教你用雇主品牌力抢人才!附6类校招玩法

最新校招数据显示&#xff0c;79%的应届生在Offer抉择时首要考量薪资福利。但谈钱多伤感情啊~牛客从100案例中挑出6种最潮的校招雇主品牌玩法&#xff0c;助力你抢人才。01、英特尔中国&#xff1a;“芯”动小镇雇主是否能让自己产生激情和热情&#xff0c;已经成为应届生选择O…...

leaflet: 鼠标mouseover显示城市信息,mouseout隐藏信息(067)

第067个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中显示城市信息,这里给marker添加鼠标事件,用到了mouseover和mouseout,用于控制信息的显示和隐藏。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…...

大模型真的像人一样“思考”和“理解”吗?​

Yann LeCun 新研究的核心探讨&#xff1a;大语言模型&#xff08;LLM&#xff09;的“理解”和“思考”方式与人类认知的根本差异。 核心问题&#xff1a;大模型真的像人一样“思考”和“理解”吗&#xff1f; 人类的思考方式&#xff1a; 你的大脑是个超级整理师。面对海量信…...