Robot Framework
RF简介和特点
-
简介:RF是一个基于Python语言开发的,可扩展的,是以关键字驱动模式的自动化测试框架,
2019年7月份之前,只支持python2.7。7月份之后支持到3.7,。。。。。 -
关键字驱动和数据驱动的区别?
- 关键字驱动:关键字驱动表示把项目中的一些逻辑封装成关键字(一个函数名),比如:login,register.
调用不同的关键字组合实现不同的业务逻辑,从而驱动测试用例执行 - 数据驱动:数据驱动是把测试用例里面的数据提取到excel或者yaml文件里面,然后通过改变excel或者
yaml中的数据驱动测试用例执行
- 关键字驱动:关键字驱动表示把项目中的一些逻辑封装成关键字(一个函数名),比如:login,register.
-
RF特点
- 编写用例简单,可以以robot,txt,tsv或html的格式编写用例
- 自动生成html格式的测试报告和日志
- 除了自带的类库外,还有很多的实用的扩展类库
- 可以根据项目需要自定义一些关键字
- 可以使用GUI的方式运行,可以和SVN、GIT以及Jenkins持续集成
RF环境安装
- 1.安装python3.7,设置python环境变量
- 2.使用管理员的身份打开dos窗口,输入下面的命令:pip install robotframework==3.1
- 3.在dos窗口中安装RIDE工具,输入下面的命令:pip install robotframework-ride
- 双击ride图标,或者在dos窗口输入ride.py ,我是采用这个方式进入的 python3.6.5 robotFrameWork 环境安装
RF的使用
- 创建项目:new project
- 注意:输入项目名称,选择项目路径,选择Dictionary目录
- 创建测试套件(它是测试用例的载体): new testsuit
- 注意:选择File文件
- 关注:关注Edit页签,主要有四大块
-
1.Setting设置
- Document:描述
- Suite Setup:测试套件之前的准备工作
- Suite Teardown:测试套件之后的扫尾工作
- Test Setup:测试用例之前的准备工作
- Test Teardown:测试用例之后的扫尾工作
- Test Template:测试用例模板
- Test Timeout:测试用例超时的时间
- Force Tags:强制标记,比如说:smoke冒烟用例
- Default Tags:默认标记,比如product
-
2.Import:导入外部文件
- Library:导入外部类库,如果是黑色表示成功,红色表示失败
- Resource
-
3.定义内部变量
-
4.元数据
-
- 创建测试用例: new testcase
- 创建业务关键字(资源文件,它是自定义关键字的载体): new resource
- 注意:只能在文件夹下面创建,并且是txt格式,它是自定义关键字的载体
- 创建用户自定义关键字: new user keyword
RF常用类库
-
1.标准库:不需要安装,直接用,RF再带
-
Buitini(测试库)
-
Collections(集合库)
-
DateTime(时间库)
-
ScreenShot(截屏库)
-
标准库的位置:虚拟环境位置\Lib\site-packages\robot\libraries
-
-
2.扩展库:需要通过pip安装库
-
web自动化测试:SeleniumLibrary,Selenium2Library, Selenium2Library for java等
-
API接口自动化:RequestsLibrary,
-
APP自动化测试:AppiumLibrary
-
扩展库的位置:虚拟环境位置\Lib\site-packages\
- 特别强调:在导包时一定要和文件夹的名字一致,包括大小写
-
RF常用关键字的使用
- 快捷键
- 搜索关键字:F5
- 自动补齐关键字:ctrl+shift+空格
准备UI自动化测试的环境
-
通过pip安装扩展库: pip install robotframework-seleniumLibrary
-
下载谷歌浏览器
-
下载谷歌浏览器的驱动(注意:谷歌浏览器的驱动必须和谷歌浏览器兼容)
- 把chromedriver.exe放到所建立的虚拟环境路径下
-
在RF的测试套件里面导入seleniumLibrary
元素定位
-
id,name,link_text,partial_link,xpath,css,class_name,tag_name
-
前提:元素必须唯一
-
xpath:
- 通过绝对路径定位:这种方式几乎不用
- 通过相对路径定位:eg://form/span/input
- 通过元素属性定位:eg://input[@autocomplete=“off”]
- 通过部分属性定位:eg: //input[starts-with(@autocomplete,“of”)], //input[contains(@autocomplete,“of”)]
- 通过文本定位: //input[text()=“新闻”]
-
css
-
通过绝对路径定位,这种方式几乎不用
-
通过ID或者CSS定位
- #ID
- .class
-
通过元素属性定位
- input[autocomplete=“off”][class=“s_ipt”]
-
通过部分属性定位
- input[autocomplete^=“of”)]
-
通过子元素定位
-
项目的三层架构
-
三层架构指的是什么
-
页面元素层
-
业务逻辑层
-
测试用例层
-
业务逻辑层调用页面元素层,测试用例层调用业务逻辑层
-
-
为什么需要分层,意义在那里
- 实现页面元素,公共方法,公共数据,测试用例集中式管理
- 增加脚本的重复利用率
- 增加脚本的可维护性
RF非GUI方式(命令行)运行
- 执行命令
- 打开cmd,然后输入pybot -d 测试报告的路径 测试用例的路径