Robot Framework框架简介

  • Robot Framework框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法。它本身拥有强大的标准库,此外还可以根据项目需要,使用Python对其测试库和框架本身进行扩展和优化,能同时满足对接口、数据库、UI自动化和服务器端自动化的测试需求,编写测试用例的成本低,维护方便。

项目说明

  • 本框架使用的是接口设计的分层玩法,分层的原则是:接口数据和接口业务分离。具体为:项目目录结构分层,接口数据与接口用例分离,接口用例与接口业务分离,公共方法和公共配置也接口业务分离,在测试用例中可以传入不定参数,同时也可以定义用例的执行顺序。

技术栈

  • Robot Framework
  • RequestsLibrary
  • HttpLibrary.HTTP

框架目录结构及相关说明

1、框架目录结构图如下

2、目录结构说明

  • 公共配置 ===========> 配置文件,定义公共请求头、请求域名等
  • 基础模块 ===========> 封装请求方法,公共方法和工具方法模块
  • 功能组件 ===========> 封装接口业务模块,接口依赖模块,多个接口组合复杂业务场景等
  • 主干用例&项目用例 ===========> 存放接口测试用例

代码设计与功能说明

1、封装请求方法,如下


*** Settings ***
Library RequestsLibrary
Library Collections
Library HttpLibrary.HTTP
Resource ../icmcenterApi/公共配置/公共配置_index.txt *** Keywords ***
SendPost
[Arguments] ${root_url} ${uri} ${ParameterDict} ${DataType} ${header}
[Documentation] ${root_url}:接口的host;
... ${uri}:接口uri;
... ${dict}:接口传入参数,字典数据类型;
... ${DataType}:传入参数类型,如data等;
... ${header}:请求头,字典类型。
...
... 响应数据为json类型。
...
... 若为独立请求,可在请求结束后立即释放连接。
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
create session api ${root_url}
${response} post request api ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout}
# 将json的string类型的数据转成python的字典类型
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response.text} SendGet
[Arguments] ${root_url} ${uri} ${ParameterDict} ${header}
[Documentation] 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
create session api ${root_url}
${response} get request api ${uri} params=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response.text} re_session
[Arguments] ${host}
[Documentation] 创建会话
create session session ${host} re_post
[Arguments] ${uri} ${ParameterDict} ${DataType} ${header}
[Documentation] 不创建会话,仅发送post请求;
... 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
${response} post request session ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response} re_get
[Arguments] ${uri} ${ParameterDict} ${header}
[Documentation] 不创建会话,仅发送get请求;
... 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
${response} get request session ${uri} params=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response}
  • post请求

  • get请求

  • 以不定参数的形式封装请求,后续调用时,可传入不同个数的参数,方便不同场景下测试用例的设计

2、封装接口业务模块

  • 根据业务应用场景,组合接口模块
  • 发起请求,获取响应,并进行响应断言

3、测试用例设计

  • 根据业务场景,设计测试用例
  • 调用组合的接口模块,并依据场景需要,传入不同的参数

项目实例演示

基于Robot Framework的接口自动化测试的更多相关文章

  1. 基于Python的HTTP接口自动化测试框架实现

    今天我们来讲一下基于Python的HTTP接口自动化测试框架的实现,范例如下: 一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值 输出:XML文件 e ...

  2. 基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架

    前端自动化测试框架 项目说明 本框架是一套基于selenium+Python3.7+yaml+Robot Framework而设计的数据驱动UI自动化测试框架,Robot Framework 作为执行 ...

  3. Robot Framework+adb框架自动化测试Android设备案例⑷——L2层关键字

    一.EMMC测试套件 L2层关键字.robot *** Settings *** Resource ../L3公共层.robot *** Keywords *** 一般录影文件列表(EMMC) ${f ...

  4. Robot Framework+adb框架自动化测试Android设备案例⑸——L1层测试用例

    一.L1层测试用例 1.初始化.robot *** Settings *** Resource ../L2层关键字.robot *** Test Cases *** 切换EMMC模式 [Tags] A ...

  5. Robot Framework+adb框架自动化测试Android设备案例⑹——源码地址、测试报告

    一.源码地址 GitHub:https://github.com/xiongye105554598/DVR8010_AutoTest 二.测试报告

  6. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  7. 接口自动化测试框架 -- reudom

    reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests ...

  8. Robot Framework + Selenium2Lib

    Robot Framework + Selenium2Lib 最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具 ...

  9. Robot Framework(十八) 支持工具

    5支持工具 5.1库文档工具(libdoc) libdoc是一种用于为HTML和XML格式的测试库和资源文件生成关键字文档的工具.前一种格式适用于人类,后者适用于RIDE和其他工具.Libdoc也没有 ...

随机推荐

  1. 为什么要使用NoSQL数据库

    NoSQL概念 随着web2.0的快速发展,非关系型.分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性(原子性.一致性.隔离性.持久性,一个支持事务的数据库,必需要具有这四种特性,否则 ...

  2. Java世界最常用的工具类库

    Apache Commons Apache Commons有很多子项目,常用的项目如下 BeanUtils 提供了一系列对java bean的操作,读取和设置属性值等 map和bean的互相转换 我们 ...

  3. HttpApplication处理管道处理过程简单描述

    HttpApplication对象是由Asp.net帮助我们创建的,它是asp.net中处理请求的重要对象.为了便于扩展,HttpApplication采用处理管道的方式进行处理,将处理的步骤分为多个 ...

  4. EntityFramework之原始查询及性能优化

    之前做海信项目,数据量自交大,为了提高查询效率用的 https://www.cnblogs.com/CreateMyself/p/4746258.html

  5. sql 应用记录

    SELECT * FROM (select aa.*,bb.mentalvisitid, ' then '家庭访视' else '电话' end as BCSFXS ,bb.visitdate, ' ...

  6. 创建pod失败分析

  7. CentOS7下MariaDB数据库安装及配置

    前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存 ...

  8. 题解【CJOJ1070/UVA】嵌套矩形

    P1070 - [Uva]嵌套矩形 Description 有 n 个矩形,每个矩形可以用两个整数 a, b 描述,表示它的长和宽.矩形 X(a, b) 可以嵌套在矩形 Y(c, d) 中当且仅当 a ...

  9. Linux - cron - 基础

    概述 cron 相关的理解与使用 背景 最近实在没啥写的了 我写东西, 一般是是这些 看了书过后, 做一些系统的整理 比如之前的 docker 和 git 系列 遇到了实际问题, 解决过程也不是那么顺 ...

  10. python的setup和teardown

    关于python unittest ① setup():每个测试函数运行前运行② teardown():每个测试函数运行完后执行③ setUpClass():必须使用@classmethod 装饰器, ...