太全面了!RF接口自动化框架项目实战
每天进步一点点,关注我们哦,每天分享测试技术文章
本文章出自【码同学软件测试】
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试
以码同学VIP课程中的微服务项目进行接口自动化实战
01
搭建项目结构
创建一个项目,名字自己起,课上叫微服务项目接口测试框架,初始项目结构如下,不要着急对着图去创建,看下方解释再创建
配置: 这是一个目录,用来存放公共信息的
公共配置 :这是一个Resource,创建是右键配置New Resource接口层: 这是一个目录,用来管理和定义接口基本信息
按照项目业务进行分类管理
买家api :这是一个Resource,创建是右键接口层New Resource卖家api :这是一个Resource,创建是右键接口层New Resource管理员api :这是一个Resource,创建是右键接口层New Resource基础服务api :这是一个Resource,创建是右键接口层New Resource接口默认参数 :这是一个目录,当接口参数比较多时,用来存储默认参数的,存到文件里, 方便管理业务关键字 :这是一个Resource,用来封装一些自定义的业务关键字,创建是右键接口层 New Resource测试用例层: 这是一个目录,用来管理所有测试用例
测试数据层: 这是一个目录,管理测试数据的,测试数据存在文件
02
公共配置
根据项目情况,添加公共配置变量,各个服务的域名,数据库信息,redis信息,买家/卖家/管理员账号,并且导入需要的第三方库RequestsLibrary
03
接口层各接口定义
首先在各个api分类中导入,注意是每个 哦
01
买家api编写
每个接口定义都是一个用户关键字,右键选择New User Keyword
1、买家登录接口
2、添加购物车接口
3、清空购物车接口
4、立即购买接口
5、设置收货地址接口
6、设置支付类型接口
7、创建交易接口
8、确认收货接口
9、评论接口
评论接口的参数是json串,参数较多,不方便一个个传递,所以将其作为整体传递
设计思路:
在[接口默认参数]目录中创建一个 评论.json文件,内容写所有参数的默认值,其中写xxxx代表这个是动态数据,必须每次都由调用方传递 关键字入参的含义: ${order_sn}、${sku_id}都是必传参数,${other}给了一个默认值,表示可以不传,如果用户需要针对json参数里除了order_sn和sku_id的参数进行测试时就要以${other}代表,${other}的传递规则是字符串形式的json格式字符串,key必须是jsonpath表 达式,value是要替换的新值例如: 针对替换json串中的特定字段封装一个自定义关键字 ,在业务关键字.robot下创建一个用户自定义关键字如下,业务关键字需要导入JSONLibrary 脚本解释: 第一行:读取 [接口默认参数] 目录下的评论.json文件,得到默认json参数 第二/三行:把用户传入的order_sn和sku_id更新到${comment_info}中去 第四行:判断${other}不等于default,说明用户传了其他数据,那么${other}转换成json第五行:判断${other不等于default},调用[替换json数据]关键字替换并且返回数据02
卖家api编写
每个接口定义都是一个用户关键字,右键选择New User Keyword
1、卖家登录接口
2、创建商品接口
创建商品的参数是json串,参数较多,不方便一个个传递,所以将其作为整体传递
设计思路: 由于创建商品的接口参数里从业务上来说,没有不可重复的参数或者动态参数,所以我们将其整体作为参数传递
在[接口默认参数]目录中创建一个 创建商品.json文件,内容写所有参数的默认值 关键字入参的含义: ${new_params}给了一个默认值,表示可以不传,不传时接口使用默认参数发起请求,如果用户需要针对默认json参数里的某些字段进行修改,${new_params}的传递规则是字符串形式的json格式字符串,key必须是jsonpath表达式,value是要替换的新值例如 脚本解释 第一行:读取默认参数第二行:判断有${new_params}不等于default,说明用户传了其他数据第三行:判断有${new_params}不等于default,调用[替换json数据]关键字替换并返回3、确认发货接口
4、确认收款接口
5、获取商品sku信息接口
03
管理员api编写
免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
管理员登录接口
审核商品接口
04
各个登录关键字封装
由于各个服务在测试时都必须先完成登录获取token,所以我们将各个服务的登录做成关键字 在业务关键字.robot下进行依次创建和封装
导入需要的
创建买家session和提取token 关键字
创建卖家session和提起token 关键字
创建管理员session和提取token 关键字
04
测试用例脚本设计和编写
01
添加购物车接口测试
1、数据设计
采用数据驱动的方式来做,首先设计添加购物车测试用例数据文件,在测试数据层目录下创建一个买家接口测试数据.xlsx文件,sheet工作表名称添加购物车
数据如下:
2、数据驱动用例编写
创建买家接口目录在测试用例层,创建买家接口目录
创建添加购物车测试集合在买家接口目录下创建添加购物车测试集合,按照下图填写以及导入相关库
创建添加购物车接口模板在添加购物车测试集合下创建一个用户关键字
创建测试用例在添加购物车测试集合下创建一个测试用例
尝试执行02
立即购买接口测试
1、数据设计
采用数据驱动的方式来做,首先设计立即购买测试用例数据文件,在测试数据层目录下的买家接口测试数据.xlsx文件,sheet工作表名称立即购买
数据如下:
2、数据驱动用例编写
创建立即购买测试集合在买家接口目录下创建立即购买测试集合,按照下图填写以及导入相关库
创建立即购买接口模板在立即购买测试集合下创建一个用户关键字
创建测试用例在立即购买测试集合下创建一个测试用例
尝试执行03
创建交易测试
1、数据设计
采用数据驱动的方式来做,首先设计创建交易测试用例数据文件,在测试数据层目录下的买家接口测试数据.xlsx文件,sheet工作表名称创建交易
数据如下:
2、数据驱动用例编写
创建测试集合在买家接口目录下创建创建交易测试集合,按照下图填写以及导入相关库
创建交易接口模板在创建交易测试集合下创建一个用户关键字
创建测试用例在创建交易测试集合下创建一个测试用例
尝试执行免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
七年老测试整理的RF框架大全,一看就会,一学就懂
1.RF框架
全称robot framework,一个基于python开发的,自动化测试框架,这个框架可以做:web自动化,接口自动化,APP自动化。
github官网
1).安装python 检查python环境 python -V或 pip -V
2).安装rf(dos命令里面输入) pip install robotframework 安装图形界面库 pip install robotframework-ride
3).启动RF,安装完成后有图标直接双击运行,找到ride.py运行。
4).RF项目
项目文件夹(project )->测试集(test suite)->测试用例(test case)
5). RF功能详解
(1).设置区
引用区:
参数区:
数据区:
2、RF关键字驱动
1).什么是关键字? 有特殊含义的单词
2).什么是关键字驱动?关键字驱动脚本是比较复杂的数据驱动技术的逻辑扩展,封装了各种基本操作,每个操作由相应的函数实现,开发脚本时不需要关心这些基础函数,而是用一系列关键字指定执行的任务。
用一个关键字完成某一个功能,以期望解决我们的问题。
3)、RF基础数据类型
(1)、变量 是计算机语言中能存储计算结果或能表示抽象概念。变量可以通过变量名访问。
赋值 ${x1}=set variable 123 等价于 设x1=123。 运算: ${x1}=evaluate ${x1}+${x2}
应用:获取网页的文本,然后断言。
(2)、数组 是有序的元素序列。用于区分数组的各个元素的数字编号称为下标。下标是从0开始。
@{list}= create list 1 2 应用:调用接口传参数的时候,可以用数组。
(3)、字典 数据字典:可以根据键,得到值;也可以更新键的值。
&{map}=create dictionary aa=AA bb=B B $(map['aa"])
应用:Json格式解析之后就是字典。
4)、分支和循环
(1)、条件运算 数值比较:大于:${x}>${y} 等于:${x}==${y} 小于:${x}<${y}
字符串比较 等于:"aa"=="bb" 包含: should contain
(2)、选择结构 IF语句 Run keyword if 如果条件为True,则执行关键字。
IF...ElSE Run keyword if
ElSE IF
ElSE IF
5)、RF两种数据结构(需要使用到的库:Collections)
线性结构 数组 @{list}:1 2 3 4 5 添加元素: Append To List
键值对结构 字典 &{map}:a=A b=B c=C 添加键值对到字典:Set To Dictionary
6)、数据结构应用
for 循环 循环就是一直重复操作
:FOR ${i} IN 1 2 3 4 5
:FOR ${i} IN RANGE 1 5
Exit for loop
数据结构遍历
数组遍历 :FOR ${i} in @{list} 字典遍历: @{keys} = Get Dictionary Keys ${map} 然后遍历key
7)、字符串处理和异常
(1)、字符串的拼接
变量 #临时拼接: aaa ${x} bbb #变量拼接:${str3}= Catenate SEPARATOR= ${str1} ${str2}
(2)、字符串包含
判断s1里面包含s2 '${s1}'._contains_('${s2}')
RF常用类库
1.标准库:不需要安装,直接用,RF自带。
BUitini(测试库) Collections(集和库) Datatime(时间库) ScreenShot(截屏库)
标准库的位置:C://python373\lib\sit-pakage\robot\librarys
2、扩展库:需要安装后才能使用
Web自动化测试:SeleniumLibrary、Selenium2Library、Selenium2Library for java等
API接口自动化:RequestsLibrary
APP自动化测试:AppiumLibrary
扩展库的位置:C://python373\lib\sit-pakages
准备UI自动化测试环境
1:通过pip安装扩展库:pip install robotframework-seleniumlibrary
2:下载谷歌浏览器
3:下载谷歌浏览器驱动(注意:谷歌浏览器的驱动必须和谷歌浏览器兼容)把chromdedriver.exe放到python目录下。
4:在RF的测试套件里面导入SeleniumLibrary
元素定位
id 、name、link_test、partial_link_text、xpanth、css、class_name、tag_name
前提:元素必须唯一
xpath:
1.通过绝对路径定位:这种方式几乎不用
2.通过相对路径定位://form/span/input
3.通过元素属性定位://input[@autocomplete="off"] //input[@autocomplete="off" and @class="s_ipt"]
4.通过部分属性定位://input[starts-with(@autocomplete,"of")] //input[contains(@autocomplete,"of")]
5.通过文本定位://a[text()="新闻"]
css:
1.通过绝对路径定位:这种方式几乎不用
2.通过ID或者class定位:#ID .class
3.通过元素属性定位:input[autocomplete="off"] input[autocomplete="off" a][ class="s_ipt"]
4.通过部分属性定位:input[autocomplete^="of"]以...开始 input[autocomplete$="of"] 以....结束 input[autocomplete*="of"] 包含....
5.通过子元素定位:div#s-top-left a:nth-child(3)
项目的三层架构
1.三层架构指的是什么?
(1)页面元素层 (2)业务逻辑层(3)测试用例层 业务逻辑层调用页面元素层,测试用例层调用业务逻辑层
2、为什么需要分层,分层的意义在哪里?
实现页面元素,公共方法,公共数据,测试用例集中式管理。增加脚本的重复利用率,增加脚本的可维护性.
RF非GUI的方式(命令行)运行
pybot -d 测试报告的路径 测试用例的路径
Jenkins : Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
相关问答
项目结果单位参考值1类风湿因子(RF)3_千问健康
项目结果单位参考值1类风湿因子(RF)3,20IU/ml0-102抗链“,项目结果
tws蓝牙耳机rf测试方法和标准?
TWS耳机产线测试RF测试方法和标准如下:一:输出功率二:载波漂移三:单时隙灵敏度指标️初始载波容限,一般在40khz以内能正常连接通讯,频偏太大会导致搜到...
请问rf是什么意思?
[回答]表示R1和Rf并联后的电阻,相当于R'=R1*Rf/(R1+Rf)如果是3个电阻以上并联,就是R'=R1//R2//R3//...,用常规的数学公式就很复杂了表示R1和Rf并联后的...
蓝牙耳机CE认证RF认证需要做哪些测试?
满足的认证可能有...简便说基本有BQB认证,FCC认证,CE认证等,其中要挂蓝牙标志正规的都要过BQB,其余的认证主要是看你要销往哪里,不同地方需满足的认证可能有...
RF老出现错误怎么解决啊-宇宙中的小飘浮的回答-懂得
RF(RobotFramework)出现错误的解决方式取决于出现的错误类型和具体情况。以下是一些常见错误类型和解决方法:1.语法错误:在编写测试用例或关键字时...
射频工程师做的项目?
1、射频电路系统分析射频工程师需要对射频电路部分负责,需要对整个RF系统的电路进行系统分析,包括分配单元模块指标,规范EMC设计原则,提出附件功能与性能要...
如何评价俄罗斯的最新改进型图-22M3M“逆火”战略轰炸机?
“逆火”重装归来:俄罗斯将与美国实现力量平衡?图-22M3“逆火”战略轰炸机2018年12月28日,由俄罗斯联合航空制造集团(UAC)进行了符合21世纪作战要求升级改...
美军AIM-120系列外形没啥变,性能为啥就大幅度提高了?
AIM-120是通过内部升级以及改进算法、弹道的方式提升性能首先美国AIM-120导弹所采用的这种气动外形本身是最经典的对空导弹气动布局方式,这种布局叫做“双十字...
行业基准收益率是什么?
基准收益率(benchmarkyield),也称基准折现率是企业或行业或投资者以动态的观点所确定的、可接受的投资项目最低标准的受益水平。是投资决策者对项目资金时间...
mit设备是什么?
MIT计算机科学与人工智能实验室(ComputerScienceandArtificialIntelligenceLaboratory,简称CSAIL)之前曾有过类似的项目,新项目是以旧项目...