七年老测试整理的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开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
太全面了!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软件是什么?
RF是基于python的自动化测试框架,是关键字驱动。和pytest功能类似,但语法不同,RF不需要写python代码,pytest需要。RF优点:自带测试报告功能,无需安装插件...
itrf框架是什么?
ITRF坐标框架是一个地心参考框架。它是由空间大地测量观测站的坐标和运动速度来定义的,是国际地球自转服务ERS的地面参考框架。由于章动、极移影响,国际协定...
itrf97框架是什么?
ITRF坐标框架是一个地心参考框架。它是由空间大地测量观测站的坐标和运动速度来定义的,是国际地球自转服务ERS的地面参考框架。由于章动、极移影响,国际协定...
未来佳能rf卡口会不会有一支高素质、高性价比、体积小型化的50mmf/1.4标头呢?
理论讲,这是一定的!微单是未来的趋势,RF自然也是未来的镜头趋势!去年九月,佳能发布EOSR同期发了一支RF351.8macrostmIS镜头售价亲民!算是高性价比...理...
北斗2000坐标参数?
2000国家大地坐标系以ITRF97参考框架为基准,参考框架历元为2000.0。CGCS2000坐标系原点和轴定义如下:原点为地球的质量中心;Z轴指向IERS参考极方向...
cgcs2000特点?
2000(中国)国家大地坐标系以ITRF97参考框架为基准,参考框架历元为2000.0。2000国家大地坐标系的大地测量基本常数分别为:长半轴a=6378137m;地球...
cgcs2000坐标经纬度是什么?
是我国当前最新的国家大地坐标系,英文名称为ChinaGeodeticCoordinateSystem2000,英文缩写为CGCS2000。CGCS2000是2000国家大地坐标系,属于地心大地...
华为5G技术与SpaceX公司的星链技术比,孰优孰劣?
5G技术和星链计划还是有比较大的差异的,它们是现有条件下针对不同人口密度地区的一对很好的补充产品,就算中国5G技术基本普及,都还是需要有近似于星链计划这么...
集装箱各种箱型缩写的问题?
RC是不是想说RF啊,冷柜REEFERdg是危险品DANGEROUSFR是框架箱FLATRACKOT是开顶柜OPENTOPRC是不是想说RF啊,冷柜REEFERdg...
集装箱45gp是什么柜子
GP代表的是普通的标准尺寸的集装箱,FR代表的是框架集装箱,也叫“平板柜”,通常是装大型设备用的。集装箱一般可以分为以下类型:普通箱20GP普通箱40GP...