Robot Framework之测试用例分层实战
1.1 测试用例的第一层(交互层)
1. 创建项目资源(Resource)。

操作步骤:
点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 mykeywork->新建项目资源。
2.给新建的项目资源导入Selenium2Library库。


3.创建自定义关键字(New User Keyword)。

操作步骤:
点”项目资源”->右键,选New User Keyword,在弹窗Name 输入框输入资源名称 打开浏览器->新建用户关键字。
4.给新建的用户关键字(打开浏览器),添加操作步骤。

5.新建用户自定义关键字(最大化浏览器)。

6. 新建用户自定义关键字(输入用户名)。

7. 新建用户自定义关键字(输入密码)。

8. 新建用户自定义关键字(点击登录)。

这样我们就把实现教育局招生系统的登录系统拆分成5个自定义的关键字。接着我们新建一个测试用例,通过自定义的关键写教育局招生系统的登录步骤。
9.新建一个登录的New Suite->新建一个login用例->把自定义关键字资源(mykeywork)导入进来。

10.用用户自定义关键字的关键字写登录步骤。

11.运行用用户自定义关键字的关键字写的测试用例,查看测试结果。


有的时候,打开浏览器或者登录的用户名可以不一样,那么就需要我们去改程序,为了更加灵活,我们可以在新建自定义关键字(New User Keyword)的时候,把经常需要改变的值进行参数化。
调整一:


调整二:

调整三:

经过参数化之后,测试用例也是需要做相应的调整,如下:

上面整体的例子说明:我们不但要把操作步骤拆分离,而且还要做到数据和代码分离。
1.2 测试用例的第二层封装(页面层)
封装的过程步骤如下:
1. 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 page.txt->新建项目资源。

2.给新建的项目资源导入Selenium2Library库。

3.把交互层的关键字(mykeywork)资源导入到page层中


4.创建page层关键字(点page.txt资源->右键->新建自定义关键字New User Keyword(登录页面))。

5.对登录页面关键字的数据进行参数化。



这样我们就把page层登录页面关键字封装好了。
补充说明:整个项目的page层有很多页面关键字,这里只是举例了登录一个关键字,其实每层都可以根据需要封装不同的关键字的。
1.3 测试用例的第三层封装(流程层)
封装的过程步骤如下:
1. 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 flow.txt->新建项目资源。

2.给新建的项目资源导入Selenium2Library库。

3.把交互层的关键字(mykeywork)资源导入到流程层中

4.把页面层的关键字(page)资源导入到流程层中。

5.建流程层关键字(点flow.txt资源->右键->新建自定义关键字New User Keyword(登录流程))。

6.流程层关键字步骤封装

7.流程层关键字数据参数化

到这里,3层的关键字基本已经封装好了,我们就可以写测试用例了。
1.4 测试用例的编写
过程步骤如下:
1.新建一个New Suite(测试套件)登录

2. 给登录(测试套件)导入Selenium2Library库

3. 把交互层的关键字(mykeywork)资源导入到登录(测试套件)中

4.把流程层的关键字(flow)资源导入到登录(测试套件)中。

5.新建测试用例(新建一个登录的New Suite->新建一个login用例)。

6.登录测试用例的实现。
代码实现:

运行结果:

7.测试用例的验证。
项目例子一:(登录成功的验证)
步骤:
1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(检查登录成功)

2)修改之前的测试用例,简化用例。

项目例子二:(登录失败的验证)
步骤:
1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(检查失败成功)

2)新建一个新的login2


7. project(项目)、Suite(模块)、Test case(测试用例)的Settings项设置。
project(项目)、Suite模块(测试套件)、 Test case(测试用例)都有一个Settings项,下面对Settings项的各个字段说明:

【Suite Setup】设置测试套件下所有的测试用例Setup项,假如在这里设置了关键字,也就是每个测试用例开始的时候都调用这个关键字。
项目例子:每个用例的开始,默认打开浏览器。

【Suite Teardown】设置测试套件下所有的测试用例Teardown项,假如在这里设置了关键字,也就是每个测试用例结束的时候都调用这个关键字。
项目例子:有些用例可能没有执行到最后,就失败了,导致浏览器没关闭,这样我们就可以在这里加一个关键字,假如用例执行失败,关闭浏览器。
步骤:
1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(测试失败时候调用)

2)设置测试套件下所有的测试用例Teardown项

【Test Setup】设置单个的测试用例Setup项。
【Test Teardown】设置单个的测试用例Teardown项。
【Test Template】设置单个的测试用例模板,这个用的比较少。
【Test Timeout】设置单个的测试用例超时时间,每个步骤都超时设置的时间。
【Force Tags】
【Default Tags】
1.5 继续封装测试用例关键字
项目例子一:登录时候不需要关注是登录成功还得失败,那就需要再封装关键字
步骤:
1.在page层创建一个新的关键字(登录检查)

2.编写登录检查关键字

3.创建一个新的用例login3。
代码实现:


运行结果:

备注:失败的例子,就把Pass 改成Fail 就可以了。
Robot Framework之测试用例分层实战的更多相关文章
- Robot Framework - 1 - 测试用例与测试库
01- 关于测试库(Test libraries) Test libraries provide the actual testing capabilities to Robot Framework ...
- Robot framework之元素定位实战
1.1 id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人 id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...
- 执行robot framework 的测试用例 命令行pybot使用方式
1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...
- Robot Framework: 自定义自己的python库
利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...
- 【转】Robot Framework 快速入门
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Robot Framework 快速入门
Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...
- Robot Framework 快速入门_中文版
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Robot Framework自动化测试(四)--- 分层思想
谈到Robot Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...
- 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化
前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...
随机推荐
- SpriteBuilder中应用智能精灵集之后提示找不到文件的解决
SpriteBuilder中有一个将方便的功能,可以用文件夹中的若干图片生成1张图片;这称之为智能精灵集合(smart sprite sheet).好处是可以一次性的加载图片到显存中去,提升了性能. ...
- 小强的HTML5移动开发之路(4)——CSS2和CSS3
来自:http://blog.csdn.net/dawanganban/article/details/17653149 在上一篇中我们提到学习HTML5要具备CSS的知识,在页面设计的时候HTML5 ...
- 安卓TV开发(三) 移动智能设备之实现主流TV电视盒子焦点可控UI
前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...
- unity shaderlab Blend操作
原文链接: http://www.tiankengblog.com/?p=84 Blend混合操作是作用于在所有计算之后,是Shader渲染的最后一步,进行Blend操作后就可以显示在屏幕上.shad ...
- OpenCV特征点检测算法对比
识别算法概述: SIFT/SURF基于灰度图, 一.首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点, ...
- Swift基础之UITabBarController(这是在之前UITableView中直接添加的)
这些基础内容基本已经可以搭建项目框架,剩下的就是一些优化,细节和数据请求问题,慢慢更新.... 在AppDelegate中创建方法 //创建方法执行UITabBarController func cr ...
- OC语言(四)
二十八.id类型(万能指针) 可以指向任何id对象(本身就是指针,不用*) id相当于NSObject *,类似于一种多态. 二十九.重写构造方法 new方法的实质:分配空间+alloc 和 初始化- ...
- Logistic Regression求解classification问题
classification问题和regression问题类似,区别在于y值是一个离散值,例如binary classification,y值只取0或1. 方法来自Andrew Ng的Machine ...
- 客户端状态的存储空间——Session
http协议在设计之初被设计成无状态特性,客户端的每次请求在服务端看来都是独立且无任何相关性,同一个客户端第一次请求不会与第二次请求有任何关联,即使相隔时间很短.无状态的特性让请求变得很快速且服务器也 ...
- 【Visual C++】游戏编程学习笔记之六:多背景循环动画
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44264153 作者:ZeeCod ...