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之测试用例分层实战的更多相关文章

  1. Robot Framework - 1 - 测试用例与测试库

    01- 关于测试库(Test libraries) Test libraries provide the actual testing capabilities to Robot Framework ...

  2. Robot framework之元素定位实战

    1.1  id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人   id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...

  3. 执行robot framework 的测试用例 命令行pybot使用方式

    1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...

  4. Robot Framework: 自定义自己的python库

    利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...

  5. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  6. Robot Framework 快速入门

    Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...

  7. Robot Framework 快速入门_中文版

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  8. Robot Framework自动化测试(四)--- 分层思想

    谈到Robot  Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...

  9. 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化

    前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...

随机推荐

  1. python的sorted

    读入后,要进行组内排序,按groupseq字段排序后,然后统计前后两个项的个数,累加到全局. sorted函数使用如下: def sortlist(alllist):     sorted_key1_ ...

  2. 客户地点分配多OU

    DECLARE l_num_user_id NUMBER; l_num_appl_id NUMBER; l_num_resp_id NUMBER; cust_account_rec_type hz_c ...

  3. XBMC源代码分析 1:整体结构以及编译方法

    XBMC(全称是XBOX Media Center)是一个开源的媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0系统.我自己下载了一个然后 ...

  4. 用C语言实现Ping程序功能

    本文转载自:http://www.ibm.com/developerworks/cn/linux/network/ping/ ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.p ...

  5. 用简单的C语言实现多任务轮流切换(模拟操作系统线程机制)

    最近在看linux内核的进程调度算法,也写了不少的内核注释,也参考了鸿哥的单片机框架,代码注释就开源在我的CSDN的git代码库里,有兴趣的可以去瞧瞧. 突发奇想,想到了既然单片机能够实现,那么我用标 ...

  6. Android官方技术文档翻译——开发工具的构建概述

    本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...

  7. Java的依赖注入(控制反转)

    两个主角"依赖注入"和"控制反转": 1.二都说的都是同一件事,只是叫法不同.是一个重要的面向对象编程的法则,也是一种设计模式: 2.英文原称:依赖注入,Dep ...

  8. sql将查询结果建立为新表

    1.sqlserver中,使用: select * into tab_new from tab_old SELECT * into anzhiresult from (select * from fa ...

  9. Android WebKit 内核

    一.WebKit简介 WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎.WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目.Andro ...

  10. android bitmap的内存分配和优化

    首先Bitmap在Android虚拟机中的内存分配,在Google的网站上给出了下面的一段话 大致的意思也就是说,在Android3.0之前,Bitmap的内存分配分为两部分,一部分是分配在Dalvi ...