RequestsLibrary接口测试
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接口测试的更多相关文章
- 【Robot Framework 项目实战 01】使用 RequestsLibrary 进行接口测试
写在前面 本文我们一起来学习如何使用Robot Framework 的RequestsLibrary库,涉及POST.GET接口测试,RF用例分层封装设计等内容. 接口 接口测试是我们最常见的测试类型 ...
- robotframework使用requestsLibrary进行接口测试
一.定义 接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务 分类:RESTful.webservice接口 二.安装 进入C:\Pyhon27\scripts 先要安装r ...
- 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介
1.接口测试简介 1)先简单介绍下接口测试,那么什么是接口测试呢? 百科的回答:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 看起来有 ...
- Web接口测试工具---Poster与Postman
工作当中有不少时间在编写和维护接口自动化测试用例.打算先整理一些接口相关工具的使用. 简单对接Web口测试的相关工具/技术做个划分. HTTP/SOAP协议接口的功能测试: 1.浏览器URL(GET请 ...
- robotframework接口测试初探1
robotframework这个框架最近很多人在使用它,大部分是和selenium结合的,大概看了下,然后发现这个做接口测试感觉也还不错,初步研究了下 环境安装: robotframework这个环境 ...
- RobotFrameWork http/https oauth接口测试 (二)
在RobotFrameWork http/https oauth接口测试 (一)中,大致介绍了相关的概念,终于可以步入正题了~~~ 先介绍下项目背景: 公司的项目采用的授权模式是第三种resource ...
- robotframework接口测试(一)—Get request json
(前提:引入了 requests.requestsLibrary等相关库,这样才可以只有相关的关键字.) 理想中的过程: 1. 创建session 2. 在该session下发起请求 3. 验证返回结 ...
- 使用Robot Framework做接口测试
http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...
- 接口测试工具--Poster与Postman的简单实用
HTTP/SOAP协议接口的功能测试: 1.浏览器URL(GET请求) http://127.0.0.1:8000/login/?username=zhangsan&password=1234 ...
随机推荐
- [LeetCode]1089. Duplicate Zeros
Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remainin ...
- (转)从斐波那契数列看Java方法的调用过程
斐波那契数列的定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列安纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔 ...
- Java 通过Math.random() 生成6位随机数
public static void main(String[] args) { String sjs=""; for (int i = 0; i < 6; i++) { i ...
- 8.JVM技术_JVM参数列表
1.JVM参数列表 通常情况下启动一个Java应用程序就会启动JVM的虚拟机,虚拟机在启动时可以通过java 指令传递参数给JVM. java -Xmx3550m -Xms3550m -Xmn2g - ...
- 浅谈apidoc的使用
使用前提:服务器已经安装好apidoc了 1.项目根目录建立 apidoc.json ,文件基础信息如下 { "name": "项目名称", "ver ...
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- JS 获取和返填单选按钮Value值
1.获取Radio值 $('input[name="sex"]:checked ').val(); 2.返填Radio值 $('input[name="sex" ...
- 使用IDEA创建JavaWeb项目 部署本地tomcat并运行
一.下载商业版IDEA 官方链接:https://www.jetbrains.com/idea/download/#section=windows 二.新建JavaWeb项目 1.在菜单栏找到File ...
- python标准库之glob
在python中,glob模块是用来查找匹配的文件的 在查找的条件中,需要用到Unix shell中的匹配规则: * : 匹配所所有 ? : 匹配一个字符 *.* : 匹配如:[hello.txt,c ...
- cnblogs设置各级标题样式和目录
向博客园申请js权限 我们需要进入博客园自定义博客模板的页面,向博客园管理团队申请页面运行js的权限. [博客园]->[设置]->[博客设置],点击页面上的js权限申请,然后填写申请的理由 ...