RequestsLibrary常用的关键字

关  键  字

描   述

Create Session

创建HTTP会话

Get Request

采用get方式请求

Post Request

采用Post方式请求

Put Request

采用Put方式请求

Delete Request

采用Delete方式请求

Head Request

头部请求

Delete All Sessions

删除所有HTTP会话

To Json

转换为json格式

▲ 还有更多关键字,请在RF框架F5键查阅测试库使用方法,需要给合其它测试库的Create Dictionary和Get From Dictionary、Should Be Equal As Integers、Should Be Equal As Strings关键字使用

测试金字塔

从金字塔图可知:

1、UI测试投入成本高,速度慢,常见的黑盒自动化测试场景

2、Service接口测试属于二者之中,测试收益最大,且最容易有成果和成效的部分【前提条件:需要产品开发人员必须提供接口文档】

3、Unit单元测试成本低,速度快,一般是有产品开发团队进行开展

接口用例分层设计

在这里模块可划分成三类:

一类,按功能模块划分,在命名时以具体功能作为命名,如登录模块,可命名为Login,且功能模块主要用来验证某个单一模块下各接口功能上是否符合预期

二类,按业务模块划分,在命名时以Business命名,所有业务功能验证均存放在此目录下,主要用来验证实现具体业务功能时,各接口的关联组合调用验证,如验证某个视频播放功能时,其中,对于视频播放这一具体的业务来说可能会涉及到很多接口之间的调用,包括接口前置条件,接口之间传递数据,接口数据清理等。

项目的功能模块划分以具体的项目而定,在实际的接口自动化项目开展中,需要求开发人员提供项目接口对接文档。接口测试人员,依据接口对接文档描述,划分具体的功能模块及某个功能模块下包含了哪些具体接口。

三类,按安全模块划分,在命名时以Safe命名,所以安全功能验证均存放在此目录下同,主要用来验证接口安全,比如绕过验证、敏感信息是否加密等。

整体分层如下:

不同接口模块下,又可根据子功能的不同,划分成不同的接口。主要包含两部分:

1、接口业务关键字(所谓关键字驱动:对应在其它编程语言中,这里所说的关键字,其实就是封装的函数、方法),通常一个接口下,可以根据测试的业务不同,定义多个不同的关键字

2、接口功能用例,接口用例下仅需填测试数据即可(也就是常见的数据驱动测试方法)。通常不同的用例存放不同的测试数据,即业务关键字的入参,业务关键字根据接收到不同测试数据而去自动执行对应的业务流程。

通常将具体的一组动作序列封装一个业务关键字,测试用例中之所以只存放测试数据,设计核心就是在于将测试业务与测试数据分离。因为通常测试过程中,一个业务关键字的动作序列不会经常变更,需要变更的是测试数据,通常不同的测试数据,会导致业务关键字的产生的结果不同。如下图所示:通过调用数据驱动模板把每行不同的数据逐步传参到接口业务关键字执行用例。

公共方法数据分离

主要包括三部分:公共方法(Public)、项目配置文件(Config)、数据构造文件(xx_var.py)。其中:

● 公共方法,主要提供各个不同项目接口之间都会调用到的一些公共方法,如数据加密、解密,接口数据校验、接口统计等。

● 项目配置文件,主要存储接口在各个不同环境下(通常一个产品,开发完成后,都需要在测试环境验证通过后,才可发布到线上环境,这里所说的不同环境指的就是测试环境、线上环境)的访问地址,通常做法可在业务关键字编写脚本时,将接口访问地址通过变量来控制,然后此变量访问主配置文件对应的接口地址即可,通常接口环境分定义为测试环境下的接口访问地址、预发布环境接口地址、线上接口环境地址等。

● 数据构造文件,由于在不同环境下,需要用到的测试数据可能会有所不同,所以可通过构建对应环境下的变量文件来为接口在不同环境下执行时提供测试数据,变量控制文件中主要存储一些可变的变量文件,或通过函数来构造测试数据然后再将构建数据方法返回到具体变量中提供给测试用例或业务关键字使用。

数据控制文件的设计核心在于,在变量文件中定义构造数据的函数方法,然后将方法的返回值赋给一个变量,在具体的接口引用该变量。

除了通过python代码函数以外,还可通过如下关键字来封装成函数通过返回值传参供业务关键字调用,如下图所示:

  • 封装加密接口

这里产品接口登录采用了token+毫秒级时间戳+md5+aes接口加密处理流程,具体解决方法如下:

先封装好生成密钥接口,如上图所示,先创建时间再转换原始时间,然后再转换为毫秒级时间戳,然后根据生成密钥规则原理进行逻辑处理,最后调用关键字Body Encrypt生成aes密钥,再返回创建的时间戳和产生的AES密钥提供其它用例模块使用。

这里的关键字Body Encrypt是需要自己二次开发测试库。然后导入自己开发的测试库就可以使用关键字,如下图所示:

  • 封装获取token值

需要通过传参生成的AES密钥和时间戳传入给${Data}变量,登录成功后,会返回token值,提供其它用例模块调用。

  • 数据驱动

如上图,录入数据,通过调用测试模板修改个人信息,把数据传参过去。

这里调用加密接口和获取token接口,把token变量传给头部,这样能够进行其它用例接口测试,因其它用例接口头部涉及到token字段,所以需要用到token构造头部。

RequestsLibrary接口测试的更多相关文章

  1. 【Robot Framework 项目实战 01】使用 RequestsLibrary 进行接口测试

    写在前面 本文我们一起来学习如何使用Robot Framework 的RequestsLibrary库,涉及POST.GET接口测试,RF用例分层封装设计等内容. 接口 接口测试是我们最常见的测试类型 ...

  2. robotframework使用requestsLibrary进行接口测试

    一.定义 接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务 分类:RESTful.webservice接口 二.安装 进入C:\Pyhon27\scripts 先要安装r ...

  3. 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介

    1.接口测试简介 1)先简单介绍下接口测试,那么什么是接口测试呢? 百科的回答:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 看起来有 ...

  4. Web接口测试工具---Poster与Postman

    工作当中有不少时间在编写和维护接口自动化测试用例.打算先整理一些接口相关工具的使用. 简单对接Web口测试的相关工具/技术做个划分. HTTP/SOAP协议接口的功能测试: 1.浏览器URL(GET请 ...

  5. robotframework接口测试初探1

    robotframework这个框架最近很多人在使用它,大部分是和selenium结合的,大概看了下,然后发现这个做接口测试感觉也还不错,初步研究了下 环境安装: robotframework这个环境 ...

  6. RobotFrameWork http/https oauth接口测试 (二)

    在RobotFrameWork http/https oauth接口测试 (一)中,大致介绍了相关的概念,终于可以步入正题了~~~ 先介绍下项目背景: 公司的项目采用的授权模式是第三种resource ...

  7. robotframework接口测试(一)—Get request json

    (前提:引入了 requests.requestsLibrary等相关库,这样才可以只有相关的关键字.) 理想中的过程: 1. 创建session 2. 在该session下发起请求 3. 验证返回结 ...

  8. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

  9. 接口测试工具--Poster与Postman的简单实用

    HTTP/SOAP协议接口的功能测试: 1.浏览器URL(GET请求) http://127.0.0.1:8000/login/?username=zhangsan&password=1234 ...

随机推荐

  1. TVM设备添加以及代码生成

    因为要添加的设备是一种类似于GPU的加速卡,TVM中提供了对GPU编译器的各种支持,有openCl,OpenGL和CUDA等,这里我们选取比较熟悉的CUDA进行模仿生成.从总体上来看,TVM是一个多层 ...

  2. Vagrant box 增加磁盘容量方法

    一直以来都是以vagrant+docker作为开发环境,可是久而久之,原Box自带的8G容量就捉襟见肘了.时不时需要手动删除一些东西. Virtualbox 本身只支持vdi硬盘文件格式的扩容,对vm ...

  3. webconfig中的&符号问题解决

    第一种解决方案 解决方法是将“&”,用“*”代替,取的时候再替换 第二种解决方案 用“&”替换“&”

  4. Element 封印

    官方网站 https://element.eleme.cn/#/zh-CN 简介 Element 是一套为开发者.设计者和产品经理准备的基于Vue2.0的组件库,提供了配套的设计资源,帮助快速建立网站 ...

  5. Linux 下幾種網芳/Samba 目錄的 mount 方式

      Linux 下幾種網芳/Samba 目錄的 mount 方式,比較新的 Smaba 只能用 cifs 的 mount 方式. [smbmount] smbmount -o username=&qu ...

  6. 第十一章·Filebeat-使用Filebeat收集日志

    Filebeat介绍及部署 Filebeat介绍 Filebeat附带预构建的模块,这些模块包含收集.解析.充实和可视化各种日志文件格式数据所需的配置,每个Filebeat模块由一个或多个文件集组成, ...

  7. 记一次root用户在本地登录及SSH连接均遭遇permission denied的问题排查经过

    某日一位老师反映,机房的6号节点无法登录了.一开始以为是为节点防火墙配置IP白名单时忘记了加进去,但随后发现此节点并未进行白名单配置,密码也一直未有变更,于是在自己的电脑上连接,发现终端里很快显示出了 ...

  8. resultMap自定义映射---8.3.1. 解决列名(表中的字段名称)和实体类中的属性名不一致

    1.1.1.1.      步骤一:将驼峰匹配注释掉 --------------测试完成后仍然 回来开启  其他地方可能用到 一旦注释掉驼峰匹配,那么再通过queryUserById查询的结果中,用 ...

  9. string类的总结

    一.string类头文件:#include <string>;using namespace std; 二.string类方法: 1.获取string的字符串长度:size(),size返 ...

  10. C++第三次作业:作用域

    作用域的定义 作用域是一个标识符在程序正文中有效的区域. 1.函数原型作用域 在函数原型声明时形式参数的作用范围就是函数原型作用域. 它是C++程序中最小的作用域. 例: double area(do ...