简介
由Nokia Siemens Networks(诺基亚西门子)开发。
Robot Framework是一款基于python的功能自动化测试框架。可以同时测试多种类型的客户端和接口。
主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。
特点
Robot Framework框架本身并丕提供任何类型的测试,它只提供作为自动化测试框架的基本功能,如用例的批量执行、测试报告的生成等。
使用简单
可以像编写程序一样编写Robot Framework 脚本。
有非常丰富的库。
易于使用,采用表格式语法,统一测试用例格式。
复用性好,可利用现有关键字来组合新关键字。
支持变量,支持if语句和for循环语句。
提供标签功能,可对测试用例进行分类,并有选择的执行。
执行报告和日志采用html格式,易于阅读。
安装RootFramework
安装Robot Framework框架
需要pythonRobot Framework基于python环境
pipinstall robotframework
安装robotframework-requests库
robotframework-requests 即 RequestsLibrary
基于Robot Framework和 Requests 提供HTTP接口测试
Requests库基于Python语言,用于模拟发送HTTP请求
pipinstall --no-index --find-links=包目录-rrequirement.txt
安装RIDE库
Robotframework IDE
提供编写robotframework测试用例的图形界面。
pipinstall --no-index --find-links=包目录-rrequirement.txt
在ride中创建测试
如果是目录的话,在下面还可以创建文件,但如果是文件的话,那就只能创建用例
在Robot Framework框架中,一般将测试项目分为三层:Test Project、 Test Suit和 TestCase。
Test Project
测试项
既可以创建成目录,也可以创建成文件。
若创建成目录,则可以在它下面创建Test Suit若创建成文件,则只能在它下面创建 Test Case
Test Suit
测试套件
同样可以创建成目录,或创建成文件。
若创建成且录,则可以它下面创建子Test Suit若创建成文件,则只能在它下面创建Test Case
Test Case
测试用例
只能创建在文件中。
一般情况下,将Test Project和 Test Suit分别对应为一个测试目录和一个测试文件,Test Case就是测试文件中的一条用例。
Robot Framework脚本文件一般以.robot 或.txt为后缀名,也可以使用.tsv或.html的后缀名
创建测试
File→New Project
指定创建 File还是Directory
这里选择目录
右击新建的目录→New Test Suite
指定创建File还是Directory
这里选择文件,扩展名robot
注意
保存位置文件名正确
右击新建的Test Suite→New Test Case
为测试用例命名
在Test Sute下可以创建多个用例,这些用例都位于一个文件中
点击file新建项目
在项目上右键,添加测试套件
在测试套件上右键testcase新建测试用例,一个套件可以创建多个测试用例
ride中导入包
单击新建的Test Suite
单击右侧的Library,添加如下库
RequestsLibrary
即robotframework-requestsCollections
用于将参数存入字典
String
用于字符串的处理
右键项目或者套件,在其上,点击添加库,输入库名的时候,正确的为黑色,错误的是红色
导包可以是项目也可以是套件内,但是在套件上的话,仅该套件可用
测试用例的基本结构
关键字
不区分大小写
注释
Comment messages“”(注释文本)
快捷键:
ctrl+#
取消: ctrl+$
行尾加 #注释文字
输出日志
Log message或变量1,变量2… level=INFO
在指定日志级别下记录message或变量值。
文本不需要加引号。
多个变量间以英文逗号间隔,多个变量结果输出在同一行中。令level 可以省略,默认 INFO。
有效的日志级别有TRACE、DEBUG、INFO、HTML、WARN。
运行测试
Run选项卡→Start√快捷键F8
设置报告存储位置
Run→Arguments
-o 路径output…xml -1路径log.html -r路径\report.htm.
Robot Framework会生成三个文件,分别为output.xml、 log.html和report.html。
output.xml是以XML格式记录测试结果,阅读起来不够直观,可以使用不同的语言读取XML文件中的测试结果,生成定制化的测试报告。
编写测试用例并执行
在测试用例上添加tag,在运行时点击仅运行有tag的用例,可实现运行指定用例
解决控制台响应乱码
控制台汉字乱码
修改python lib site-packages’robotidelcontrib ltestrunnerltestrunner.py 中的latinl为 mbcs
mbcs (Multi-Bytes Character Set):多字节字符集
根据系统自动显示为本国语言的字符,在中文系统下表示GB2312
重启ride
修改输出文件的位置
定义变量
创建列表和字典
$ {变量名}
set variable 变量值
$ 开头表示变量,不论数据是否使用[]、{}
变量不区分大小写,但不全是,最好一致
${列表名}create list值1 值2 值3
数据中不需使用[]
一个单元格一个数据,每个元素自动转字符串令循环访问时建议使用@
${字典名}create dictionary关键字1=值1 关键字2=值2
数据中不需使用{}
一个单元格一对数据,每个元素值自动转字符串
循环访问时建议使用&
输出
使用$ {变量/列表/字典名}
结果为字符串形式
查看变量的数据类型
$ {结果变量}evaluate
type($ 变量名)
变量名不能再加{}
evaluate表示执行python表达式,并返回执行结果
$结果变量}evaluate int(S变量名)±*/等操作表达式
插入行
查看输出变量的类型
输出的变量类型均为str,但是可进行变量的转换
创建列表和字典
输出的时候。列表元素被转换成了字符串,如果有不想要进行转换,需要在变量前面加上@
创建字典
单分支if语句
run keyword if 表达式 命令 命令的参数1 参数2…
表达式可以用
0<=${变量名}<60的形式
${变量名} run keyword if 表达式1 set variable 值1 ELSE IF
表达式2 set variable 值2… ELSE set variable 值n
ELSE IF需要大写,中间有空格。
语句写在一行。
运算后将结果存到变量中
多分支if结构
for 循环
输出结果
范围循环
自定义关键字
·假设多层循环实现乘法口诀表
无法实现,需要自定义关键字,测试用例上右键新增关键字
setting里面新增传入的变量名称
退出for循环
如果${i}==7没有退出,可以尝试加上引号’ ${i}==7’
contiue for loop
提前进入下一次循环
创建会话
create session
会话名
url 地址
返回session对象,无需存储结果
url地址中携带 http、域名或IP、端口号令
如http://wthrcdn.etouch.cn
如果在测试用例写关键字的时候始终没有变颜色,可能没有导包,或者导的包没有方法测试用例上
发送get请求直接传参
如果是二进制的可以转换为文本,将log里面的变量变为${res.text}
使用字典传参,发送post请求
post请求添加字典作为参数
处理响应数据
通过编码格式实现文本展示非16进制
上图也可直接写成${res.text}
转换为json显示
获取json中某项
获取json数据中的status和desc
获取响应cookies
查看和处理响应头
发送cookie参数
传递cookie的值
编写登录请求接口测试用例
使用post方式发送登录请求
使用正则表达式提取会话值
传递会话值参数给登录接口
添加shouldBeEqual断言
添加shouldcontain断言
登录断言
使用正则表达式进行断言
参数化
使用列表参数化
使用文件数据参数化
将编写的脚本放到Python的lib文件下,导包
读取文件数据进行参数化