1、简介与特点
RF是一个基于python语言开发的,可扩展的,以关键字驱动模式,结合Selenium实现的一个开源的自动化测试框架。
可扩展的关键字驱动的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD)。它可用于测试分布式异构应用程序,其中验证需要涉及多种技术和接口
RF在2019年的7月之前,支持2.7;RF在2019年7月之后,支持3.7。
目前主流的自动化测试框架,RF、AirTest
数据驱动和关键字驱动:
数据驱动:把测试用例的数据单独的提取出来,放到excel里面或者yaml文件里面,通过改变excel或者yaml文件汇总的数据来驱动用例执行。
关键字驱动:把项目中的逻辑封装成一个关键字,调用不同的关键字来实现不同的逻辑,从而驱动用例执行。
特点:
1、编写用例简单,可以以robot.txt,csv,html的格式来保存用例
2、自动生成html格式的自动化测试报告日志。
3、除了自带的类库之后,还有很多扩展库。
4、根据项目的需要,自定义关键字。(自定义关键字其实就是业务逻辑)
5、使用命令行的方式,和jenkins集成。
为何选择RF??
- 启用易于使用的表格语法,以统一的方式创建测试用例。
- 提供从现有关键字创建可重复使用的更高级别关键字的功能。
- 提供易于阅读的结果报告和HTML格式的日志。
- 平台和应用程序是独立的。
- 提供一个简单的库API,用于创建自定义测试库,可以使用Python或Java本机实现。
- 提供命令行界面和基于XML的输出文件, 以便集成到现有构建基础架构(持续集成系统)中。
- 为Selenium提供Web测试,Java GUI测试,运行进程,Telnet,SSH等支持。
- 支持创建数据驱动的测试用例。
- 内置对变量的支持,特别适用于不同环境下的测试。
- 提供标记以分类和选择要执行的测试用例。
- 实现与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录。
- 提供测试用例和测试套件级别的设置和拆卸。
- 模块化架构支持创建测试,即使对于具有多种不同接口的应用程
2、RF环境安装
以管理员的身份打开dos窗口
安装python3.7.3,配置环境变量,下载谷歌的浏览器驱动,放到python目录下
在dos命令下输入:pip install robotframework==3.1(安装此版本,比较稳定)
在dos命令下输入:pip install robotframework-ride (相当于开发工具,pycharm)
在dos命令下输入:pip list
在dos命令下输入:ride.py或者点击桌面的ride快捷方式
【注意】如果pip命令使用不可,说明python路径下scrip目录没有配置到path下:D:\Python37\Scripts(不建议路径有空格)
3、RIDE界面的介绍
Edit四大块:(setting设置、导入外部文件、定义内部变量、定义元数据)
setting:测试套件的准备工作、测试套件的扫尾工作、测试用例的准备工作、测试用例的扫尾工作、强制标记
4、RF类库的介绍
1、标准库:BuiltIn(测试库)、Collections(集合库)、DateTime(时间库)、Screenshot(截屏库)
• BuiltIn :包含经常需要的关键字。自动导入无需import,因此总是可用的
• DateTime:日期和时间转换的库,支持创建和验证日期和时间值以及它们之间的计算
• Collections:提供一组关键词处理Python列表和字典。
• Screenshot:提供关键字来捕获和存储桌面的截图。
2、扩展库
Web自动化测试:SeleniumLibrary , Selenium2Library ,Selenium2Library for java
App自动化测试:AppiumLibrary
API接口自动化测试:RequestsLibrary
安装:pip install robotframework-seleniumlibrary
标准库的位置:C:\python373\Lib\site-packages\robot\libraries
扩展库的位置:C\python373\Liblsite-packages
• seleniumlibrary:Web测试库,内部使用比较流行的selenium工具。利用早期的selenium1.0和本身已经过时。
• selenium2library:使用selenium2的Web测试库。替换了大部分老的seleniumlibrary。
• selenium2library java:selenium2library的java接口
• appiumlibrary:Android和iOS测试库,内部使用的是appium
其它库介绍可参考:Robot Framework常用库简介
5、基础应用
1. 新建项目 dictionary
2. 新建文件 txt
3. 新建用例
快捷键:
F5——搜索关键字,弹出窗口,搜索关键字,下面会有说明,来源于哪些库,example表示关键字使用的实例
ctrl+shift+空格 ——自动补全关键字,如果是蓝色表示关键字是OK的,关键字后面红色的单元格表示需要输入关键字参数,根据example实例填写
6、关键字的使用
备注 | 关键字 | 输入内容 | ||||
Comment | 注释内容 | |||||
定义变量 | ${a} | 变量名 | ||||
打印输出 | Log | ${a} | ||||
获取系统时间 | ${times} | get time | ||||
Log | ${times} | |||||
强制等待 | sleep | 3 | ||||
${total_str} | Catenate | SEPARATOR=|| | 张三 | 李四 | ||
Log | ${total_str} | |||||
创建列表 | ${list2} | create list | oracle | mysql | sqlsever | |
Log Many | ${list2} | |||||
创建字典 | ${dic} | Create Dictionary | name | 陈哆肉 | age | 18 |
Log | ${dic} | |||||
获取字典的键 | ${dic_keys} | Get Dictionary Keys | ${dic} | |||
Log | ${dic_keys} | |||||
${dic_values} | Get Dictionary Values | |||||
Log | ${dic_values} | |||||
导入外部文件的方式以及使用方法 | ${rand_num} | Evaluate | random.randint(1,10) | modules=random | ||
Log | ${rand_num} | |||||
流程控制IF语句 | ${num} | Set Variable | 100 | |||
Run Keyword If | 80<=${num}<=100 | log | 优秀 | |||
... | Else IF | 60<=${num}<80 | log | 一般 | ||
打印输出单个内容 | ... | Else | log | 较差 | ||
多个打印输出,需要先自定义关键字,然后Else后输出 | ... | Else | 自定义关键字(可以为中文) | |||
流程控制FOR语句1 | For | ${a} | IN | A | B | C |
log | ${a} | |||||
END | ||||||
流程控制FOR语句2 | FOR | ${a} | IN RANGE | 1 | 11 | |
Run Keyword If | ${a}==5 | Exit For Loop | ||||
log | ${a} | |||||
END | ||||||
流程控制FOR语句3 | @{list} | create list | A | B | C | |
FOR | ${a} | IN | @{list} | |||
log | ${a} | |||||
END |