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. spark 为什么要用broadcast[转]

    为什么要用broadcast? 21down vote If you have huge array that is accessed from Spark Closures, for example ...

  2. HBuilderX开发app实现自动更新版本

      需求说明:使用MUI+Vue等技术并且通过HBuilderX打包开发移动app,在有版本更新时需要自动提示用户有新版本,并且可以点击下载自动安装. 思路说明: 应用打开时(使用Vue的生命周期mo ...

  3. C++构造函数和重载函数运算符如何区分

    构造函数和重载函数运算符如何区分: class Distance { private: int feet; int inches; public: Distance(){ feet = ; inche ...

  4. 关于强类型、ViewData

    对于ASP.NET MVC中页面强类型的个人理解   进入ASP.NET MVC学习 发现很多和winfrom不同的东西,但是利用的C#语言还是没有变化,更多的是利用了新的语言,html jquery ...

  5. Gin_入门

    1. 创建路由 1.1 Restful风格的API gin支持Restful风格的API 即Representational State Transfer的缩写.直接翻译的意思是"表现层状态 ...

  6. .net 文件接口的封装,写日志,创建文件log

    public class FileSupport { public static FileSupport Instance = new FileSupport(); public static str ...

  7. python3练习100题——019

    原题链接:http://www.runoob.com/python/python-exercise-example19.html 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数&q ...

  8. ET框架之自写模块SmartTimerModule

    1.代码结构图 2.SmartTimer 模块Entity: using System; namespace ETModel { [ObjectSystem] public class SmartTi ...

  9. 图像变换 - 霍夫线变换(cvHoughLines2)

    霍夫变换是一种在图像中寻找直线.圆及其他简单形状的方法,霍夫线变换是利用Hough变换在二值图像中找到直线. 利用CV_HOUGH_PROBABILISTIC,对应PPHT(累计概率霍夫变换)?这个算 ...

  10. UNION JOIN 连接表

    使用UNION JOIN进行多表连接,与9.3节介绍的各种表的连接类型不同,它并不对表中的数据进行任何匹配处理,而只是把来自一个源表中的行与另一个源表中的行联合起来,生成的结果表中包括第一个表中的所有 ...