爆肝整理,接口自动化测试-数据驱动框架封装(实战)

news/2024/5/16 9:17:32

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

接口自动化框架—数据驱动

在这里测试的输入和输出数据是从数据文件中读取(数据池,ODBC源,CSV文件,EXCEL文件,Json文件,Yaml文件,ADO对象等)并且通过捕获工具生成或者手工生成的代码脚本被载入到变量中。

在这个框架中,变量不仅被用来存放输入值还被用来存放输出的验证值。整个程序中,测试脚本来读取数值文件,记载测试状态和信息。

这类似于表驱动测试,在表驱动测试中,它的测试用例是包含在数据文件而不是在脚本中,对于数据而言,脚本仅仅是一个“驱动器”,或者是一个传送机构。

通俗化一点:就是把测试过程中用到的测试数据和代码进行分开编写,分开存放。

比如:测试token接口用到的数据appid-sercet以及期望结果都提前放入一个数据文件。

举例:
项目中的access_token是一个公共需求的测试数据,它生成一次有效期是7200秒,2个小时一般都能执行完所有的接口测试了。
实现一次性获取 token值,保存到文件中,后续使用文件中的 token值完成测试。

1、在项目根目录下新建conf文件夹,在下面新建config.ini文件

E1

2、在common的py文件夹下新建ini_file_utils.py文件
编写代码:

import os
import configparserclass IniFileUtils:  #和框架业务无关的底层代码==》公共底层代码def __init__(self,file_path):self.ini_file_path = file_pathself.conf_obj = configparser.ConfigParser()self.conf_obj.read(self.ini_file_path, encoding='utf-8')def get_config_value(self,section, key):value = self.conf_obj.get(section, key)return valuedef set_config_value(self,section, key, value):self.conf_obj.set(section, key, value)config_file_obj = open(self.ini_file_path, 'w')self.conf_obj.write(config_file_obj)config_file_obj.flush()config_file_obj.close()if __name__ == '__main__':current_path = os.path.dirname(__file__)config_file_path = os.path.join(current_path, '../conf/config.ini')ini_file = IniFileUtils(config_file_path)print(ini_file.get_config_value('default', 'HOSTS'))ini_file.set_config_value('default','TOKEN_VALUE', 'SSS9090')

执行查看结果:

E2

ini配置文件中的token_value的值

E3

3、重写local_config.py文件,封装读取ini文件中的值

E4

编写代码:

import os
from common.ini_file_utils import IniFileUtilscurrent_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')class LocalConfig():  # #和框架业务有关系的底层代码def __init__(self,file_path = config_file_path):self.ini_file_obj = IniFileUtils(file_path)@propertydef get_hosts(self):'''获取ini文件中的hosts值'''hosts_value = self.ini_file_obj.get_config_value('default', 'hosts')return hosts_value@propertydef get_token_value(self):'''获取ini文件中的token_value值'''token_value = self.ini_file_obj.get_config_value('default','token_value')return token_valuelocal_config = LocalConfig()if __name__ == '__main__':print(local_config.get_hosts)print(local_config.get_token_value)

查看执行结果:

E5

4、修改common_function.py文件,把获取的token值放到ini文件中
编写代码:

import os
import jsonpath
from common.local_config import local_config
from common.common_api_info import CommonApiInfo
from common.ini_file_utils import IniFileUtilscurrent_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')def save_access_token_value_info_ini_file(session_obj,hosts):"""获取access_token的值并写入到ini文件中"""response = CommonApiInfo(session_obj,hosts).get_access_token_api('client_credential','wxf14419077f707856','92a113bd4b5ffdc72144740dc7123c99')# 获取响应json中的access_token的值token_value = jsonpath.jsonpath(response.json(), "$.access_token")[0]# 把获取到的access_token值写入到ini文件中IniFileUtils(config_file_path).set_config_value('default', 'token_value', token_value)# return token_valueif __name__ == '__main__':import requestssave_access_token_value_info_ini_file(requests.session(), local_config.get_hosts)

执行后查看ini文件中的token_value的值:

已写入最新的token值

E5

5、修改run_api_tests.py文件,先把 token值写入ini文件中

E6

6、修改用例层的代码和获取token的py文件
用例层的代码脚本修改前VS修改后

E7

修改后

E8

获取token的py文件:

E9

7、执行run_api_tests.py文件,查看执行结果;

E10

查看报告

E11

Run_api_tests.py中生成了token值给ini配置文件,然后测试获取 token接口时,又调用生成了token值,为了防止后面生成值覆盖前面的值而导致ini配置文件失效,所以测试获取token接口要换不同的账号(appid和secret)

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

奋斗是生命的底色,坚持是成功的密码;追求卓越,砥砺前行,用汗水谱写辉煌乐章。相信自己的潜力与才华,不断超越自我,创造出属于自己的壮丽人生画卷!

积极拥抱挑战,勇敢闯荡人生舞台;心怀梦想,坚定追逐辉煌成功。不停歇,不止步,砥砺前行,放飞激情;相信自己的力量,奋发拼搏,书写绚丽绝伦的人生篇章!

信心点亮前行之路,汗水浇灌辉煌花朵;努力奋斗超越极限,梦想舞动青春旋律。坚持热爱,追逐远方,创造属于自己的壮丽传奇。奋发进取,才华绽放,勇往直前,成就精彩人生!


http://www.mrgr.cn/p/48254352

相关文章

SpringBoot环境标识设置及nacos匹配配置

本地环境标识设置 本地父类maven配置 可以看到相关的分类&#xff0c;设置环境标识主要需要用到profiles; <profiles><profile><id>dev</id><properties><!-- 环境标识&#xff0c;需要与配置文件的名称相对应 --><profiles.active&…

2023项目管理产品排行榜:优化企业项目管理的顶级选择

随着全球竞争加剧和商业环境的变化&#xff0c;企业对项目管理的需求越来越迫切。优秀的项目管理产品能够帮助企业提高工作效率、资源利用率和项目交付质量。 本文参考了不同的产品测评网站&#xff0c;在众多项目管理产品中&#xff0c;总结了以下几款备受好评的项目管理工具&…

stm32 mpu6050 cubemx DMP法读取角度

文章目录 前言一、相关文件二、cubemx配置三、代码变量初始化主循环 总结 前言 文件 记录使用dmp库来读取mpu6050的角度。 这是参考文件 参考1–主要参考 github参考 参考2 参考三 一、相关文件 相关文件在这里下载&#xff08;未填&#xff0c;不过可以在上面的git中下载&a…

js全端支持的深拷贝structuredClone

Jul 7, 2023 经过一年半的试用&#xff0c;structuredClone转正了&#xff0c;全端可以正式使用。 https://developer.mozilla.org/en-US/docs/Web/API/structuredClone

牛客网Verilog刷题——VL48

牛客网Verilog刷题——VL48 题目答案 题目 在data_en为高期间&#xff0c;data_in将保持不变&#xff0c;data_en为高至少保持3个B时钟周期。表明&#xff0c;当data_en为高时&#xff0c;可将数据进行同步。本题中data_in端数据变化频率很低&#xff0c;相邻两个数据间的变化&…

【Git】git reset 版本回退 git rm

前言 在日常开发时&#xff0c;我们经常会需要撤销之前的一些修改内容或者回退到之前的某一个版本&#xff0c;这时候reset命令就派上用场了 git reset 用法1——所有文件回退到某个版本 1、使用git reflog查看要回退的commit对象 2、使用git reset [-- hard/soft /mixed] …

计算机网络网--应用层

目录 应用层概述1.进程通信2. 供应用程序使用的运输服务3.因特网提供的运输服务 一.网络应用模型1.1 C/S模型&#xff08;client/server&#xff0c;客户/服务器模型&#xff09;定义工作原理功能特点优势应用 1.2 P2P&#xff08;peer to peer&#xff09;模型 与 P2P文件分发…

认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发

目录 第一章、认识主被动无人机遥感数据 第二章、预处理无人机遥感数据 第三章、定量估算农林植被关键性状 第四章、期刊论文插图精细制作与Appdesigner应用开发 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多维、多地等角度&#xff0c;获取大量的…

ubuntu20.04 安装 Qt5.15

目录 安装前工作 选择安装QT的哪个版本 安装时候选择哪些组件 安装Qt5.15 在线安装 我选择的组件 源码包安装 测试 安装前工作 ubuntu20.04.3安装Qt6.22操作步骤_ubuntu安装qt6_sonicss的博客-CSDN博客 # 安装g、gcc编译器 sudo apt-get install build-essential 安装l…

HTTP——二、简单的HTTP协议

本章将针对 HTTP 协议结构进行讲解&#xff0c;主要使用HTTP/1.1版本。学完这章&#xff0c;想必大家就能理解 HTTP 协议的基础了。 HTTP 一、HTTP协议用于客户端和服务器之间的通信二、通过请求和响应的交换达成通信三、HTTP是不保存状态的协议四、请求URI定位资源五、告知服…

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f96d;本文内容&#xff1a;spring-websocket在SpringBoot(包含SpringSecurity…

途乐证券:沪指强势拉升涨0.63%,券商等板块走强,传媒板块活跃

31日早盘&#xff0c;两市股指全线走高&#xff0c;沪指一度涨超1%收复3300点&#xff0c;上证50指数盘中涨逾2%&#xff1b;随后涨幅有所收窄&#xff1b;两市成交额显着放大&#xff0c;北向资金净买入超90亿元。 到午间收盘&#xff0c;沪指涨0.63%报3296.58点&#xff0c;深…

ERROR in unable to locate ‘***/public/**/*‘ glob

前提 自己搭了一个react项目的脚手架&#xff0c;npm包下载一切都很正常&#xff0c;启动的时候突然就报ERROR in unable to locate ***/public/**/* glob这个错误&#xff0c;根据百度分析了一下产生的原因&#xff1a;webpack配置文件中的CopyWebpackPlugin导致的 网上给出的…

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…

Mycat-Balance使用指南

MyCAT Balance是一个Java NIO的高性能负载均衡器&#xff0c;可以替代普通的硬件的交换机或其LVS类似的复杂机制&#xff0c;实现MyCAT集群的负载均衡。 MyCAT Balance的配置文件在conf目录下&#xff0c;frontend-conf.为前端配置&#xff0c;包括绑定的端口等&#xff0c;js…

政策加持智能家居市场,涂鸦赋能客户打造“以人为本”智能生活新方式

7月18日&#xff0c;商务部等13部门联合发布了《关于促进家居消费若干措施的通知》&#xff08;以下简称《通知》&#xff09;&#xff0c;《通知》指出&#xff0c;创新培育智能消费&#xff0c;支持企业运用物联网、云计算、人工智能等技术&#xff0c;着重加快智能家电、智能…

HDFS中namenode安全模式

HDFS中namenode安全模式 安全模式的现象探究step1step2step3step4 安全模式的概述控制进入时间和离开条件安全模式自动进入离开安全模式手动进入离开 安全模式的现象探究 step1 HDFS集群在停机状态下&#xff0c;使用hdfs -daemon命令逐个进程启动集群&#xff0c;观察现象首…

会议OA系统会议管理模块开发思路(layui搭建)

目录 一.为什么要进行开发 1.开发目的 2.项目流程 A.发起会议请求过程 1.首先实现我们的多选下拉框功能&#xff01; 2.时间组件功能&#xff0c;并且提交我们新增加的会议内容 3.在进行发起会议编码时遇到的问题&#xff0c;BUG 3.1.有点时候js访问不到路径 3.2在增加…

linux下docker安装、镜像下载、镜像基础操作、容器基础操作

目录 一、环境准备 1、开启虚拟化 2、关闭防火墙 3、yum仓库获取阿里源&#xff08;清华、京东都可以&#xff09; 4、确保能ping到外网 二、安装docker 1、yum安装docker 2、启动docker并设置开机自启 3、安装docker-ce阿里镜像加速器 三、docker基本操作 1、查看版…

FileHub使用教程:Github Token获取步骤,使用快人一步

FileHub介绍 filehub是我开发的一个免费文件存储软件&#xff0c;可存万物。软件仓库&#xff1a;GitHub - Sjj1024/s-hub: 一个使用github作为资源存储的软件 软件下载地址&#xff1a;。有问题可以留言或者提Issue&#xff0c; 使用第一步&#xff1a;获取Github Token 使…