接口自动化框架设计之参数传递(超详细)

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

在我们设计自动化测试框架的时候,我们会经常将测试数据保存在外部的文件(如Excel、YAML)中,实现测试脚本与测试数据解耦,方便后期维护。

当涉及到业务场景接口用例时,由于接口与接口存在关联关系,需要从上游接口取出来相关字段传递给下游接口作为入参使用,比如在Excel中我们会这样做:

在excel中新增一列【提取响应】,将上游接口的响应字段提取出来,在下游接口当中通过标记符进行使${XXX}

在YAML中我们也会有类似的用法:

- casename: 修改用户信息teststeps:- name: 登录成功request:method: POSTurl: /loginjson:principal: lemon_autocredentials: lemon123456appType: 3loginType: 0headers:Content-Type: application/jsonextract:token: $.access_tokentokentype: $.token_typevalidate:- eq: [status_code, 200]- eq: [$.nickName, "lemon_auto"]- name: 进入到个人中心request:method: GETurl: /p/user/userInfoqueryparam: nullheaders:Authorization: ${tokentype}${token}validate:- eq: [status_code, 200]- eq: [$.nickName, "lemon_auto"]

【extract】代表要提取的响应字段信息,在下游接口中同样通过${XXX}用法进行引用

参数传递替换实现

在框架中关键实现是需要识别到标记符并且进行参数的替换,一般的思路我们采用正则表达式识别标记符,并且配合环境变量取出对应的字段值再使用replace进行替换,整个的操作封装相比复杂性会比较高。

在python中提供了Template类,它能够非常简单的通过模块替换你想要的字符串。Template类中默认的替换模板就是${XXX}标记符,具体用法如下:

  1. 将要替换的原始字符串作为参数初始化Template对象
  2. 使用substitute方法,传递需要替换的内容from string import Template
# 原始数据
data = '''
{"address": "青海省西宁市城东区格兰小镇","communityName": "八家湾小区","nearbyLandmarks": "${mark}","userId": ${userId}
}
'''
# 这里是需要替换的内容,字典类型
dict = {'userId':123456,'mark':"王府井"}print(Template(data).substitute(dict))

替换之后的结果为:

{"address": "青海省西宁市城东区格兰小镇","communityName": "八家湾小区","nearbyLandmarks": "王府井","userId": 123456
}

可以看到使用非常简单,通过substitute即可将字典中的数据替换到原始数据中。

那如果原始数据中的标记符和替换的内容不对应会有什么情况?

比如这里我的替换内容只有userId:

from string import Template
data = '''
{"address": "青海省西宁市城东区格兰小镇","communityName": "八家湾小区","nearbyLandmarks": "${mark}","userId": ${userId}
}
'''dict = {'userId':123456}print(Template(data).substitute(dict))

此时会报KeyError的错误,找不到mark这个key,如果不想要报错你可以使用safe_substitutefrom string import Template

data = '''
{"address": "青海省西宁市城东区格兰小镇","communityName": "八家湾小区","nearbyLandmarks": "${mark}","userId": ${userId}
}
'''dict = {'userId':123456}print(Template(data).safe_substitute(dict)

此时的输出结果为:

{"address": "青海省西宁市城东区格兰小镇","communityName": "八家湾小区","nearbyLandmarks": "${mark}","userId": 123456
}

我们可以看到safe_substitute不会报错,并且只会替换和标记符匹配的数据,不匹配的则保持原样

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

2024全网最牛,字节大佬花了一周讲完的自动化测试全套教程,从零开始教你成为年薪百万测开工程师

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

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

相关文章

C#值传递和引用传递,ref和out关键字,装箱和拆箱

C#值传递和引用传递 1.值传递和引用传递 值传递:值传递时,系统首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应复制给形参,被调用方法中形参得任何改变都不会影响到相应的实参。 引用传递时:系统不是…

Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…

Docker Desktop修改镜像存储路径 Docker Desktop Start ... 卡死

1、CMD执行wsl -l -v --all 2、Clean / Purge data 3、导出wsl子系统镜像: wsl --export docker-desktop D:\docker\wsl\distro\docker-desktop.tar wsl --export docker-desktop-data D:\docker\wsl\data\docker-desktop-data.tar4、删除现有的wsl子系统: wsl -…

江新安教授受邀金佰利进行《研发创新与创新思维》培训

近日,科济管线创始人江新安教授受邀金佰利为金佰利全国研发团队进行《研发创新与创新思维》培训授课。创新思维的两种思维形式——非逻辑思维和逻辑思维及其训练的主要方法。创新思维的培养,对于克服思维定势,提供创新方法,可以发…

阿斯达年代记三强争霸开服时间+官网地址+预约下载安装教程分享

阿斯达年代记国际服,游戏分为三个势力,分别是阿斯达、亚高和不罚者,每个玩家都必须选择一个势力,而每个势力每周将会诞生一名势力族长,将会从五名候选人中投票产生,想要进入候选人名单,必须每天…

突破编程_前端_SVG(ellipse 椭圆形)

1 ellipse 元素的基本属性和用法 ellipse 元素用于创建椭圆形状。它具有一系列的基本属性,允许自定义椭圆的外观和位置。以下是一些 ellipse 元素的基本属性和用法: (1)基本属性 cx 和 cy:这两个属性定义了椭圆中心…

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom(H12-831)最新题库,完整题库请扫描上方二维码,持续更新。 以下关于OSPF Sham Link的描述,错误的是哪一项? A:为了使VPN流量通过MPLS VPN骨干网转发,Sham Link的路…

华火电焰灶全国经销商加盟_优势怎么样_费用多少_华焰天下

随着科技的不断进步,电焰灶作为现代厨房的重要设备,其市场需求持续增长。华火电焰灶,凭借其独特的技术优势和广泛的市场前景,吸引了众多投资者的目光。本文将从华火电焰灶的优势、加盟费用以及华焰天下的机遇三个方面,…

光遇steam下载方法 steam光遇pc下载教程 两种方法告别锁区

光遇steam下载方法 steam光遇pc下载教程 两种方法告别锁区 由《风之旅人》创作者倾力打造的治愈系MMO游戏Sky光遇,不但在全球范围内赢得了许多的奖项,而且赢得了许多玩家的喜爱。在这款游戏中,有着七个美丽而神秘的光之领域等待着玩家们的探…

220V转3.3V线性降压芯片WT5100

220V转3.3V线性降压芯片WT5100 WT5100就是那个离线式的稳压器芯片,没有电感的那种。里面内置了650V的大功率MOSFET,启动控制电路,电压控制电路,交流信号检测电路等等。通过切换SEL管脚,它就能输出5V或3.3V的电压。不需…

Java多线程学习总结

在Java中,多线程编程是一种重要的编程模型,它允许程序同时执行多个任务,从而提高了程序的执行效率和响应速度。 一、基本概念 进程与线程:进程是系统分配资源的基本单位,它包含了程序执行所需的资源,如代码…

目标检测应用场景—数据集【NO.30】织物缺陷图像目标检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…