接口测试requests

什么是接口?

接口其实就是在服务器端定义的一堆函数或者是方法的集合,接口调用其实就是在调用这堆函数或者是方法

由于接口是在两台电脑之间远程去调用这些方法,所以不能直接通过函数名来进行调用。不同电脑之间如果要进行通讯,必须通过特定的网络协议来实现,所以接口调用必须借助于网络协议来进行调用,所以学习接口测试必须先熟悉网络协议

网络协议是通信计算机双方必须共同遵从的一组约定。如怎样建立连接,怎样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它最终体现为在网络上传输的数据包的格式

协议往往分成几个层次进行定义(协议栈) ,分层定义是为了使某一层协议的改变不影响其他层次的协议

TCP/IP四层协议

HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。是基于TCP/IP模型的应用层协议。可以传输文本数据,还可以传输音频, 视频,超链接和图片等内容 HTTPS:http+SSL

URL的组成

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S架构)

HTTP协议永远都是客户端发起请求,服务器回送响应

HTTP请求过程

 HTTP协议的请求类型

 HTTP抓包操作

chrome抓包操作

fiddler抓包操作

 

 HTTP请求组成部分

URL地址

请求参数(可选)

请求头

请求体(仅限POST请求)

对于响应内容,主要关注于响应状态码和响应内容

常见HTTP状态码:

1**:临时响应并需要请求者继续执行操作

2**:请求成功。操作被成功接收并处理

3**:重定向代码,用于已经移动的文件并且在头信息中指定新的地址信息

4**:客户端错误,请求包含语法错误或者无法完成请求

5**:服务器错误,服务器在处理请求的过程中发生错误

在大多数的应用中,响应内容一般有两种格式,一种是Json格式,一种是HTML格式。而我们在进行接口测试的时候需要从响应内容中提取响应的字段或者文字内容来进行断言,所以必须掌握服务器返回不同格式响应时的内容提取方法

1.json格式:直接使用requests库的response对象自身的json方法将响应内容转化为JSON对象后再提取

2.HTML格式:利用lxml库以xpath方式提取  用正则表达式提取

接口测试是测试系统组件间接口的一种测试

接口测试主要用于检测外部系统与系统之间以及内部给个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等

系统内部的接口调用相当于是函数调用,系统外部的接口大部分都是基于HTTP协议进行调用

接口设计文档主要包含: 接口说明 请求方式 请求URL 请求参数 返回数据 返回示例

接口测试的原理就是模拟客户端向服务器发送请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程

接口测试采用的方法其实与黑盒测试一致的,甚至可以把接口测试理解为没有界面的功能测试。只不过接口测试的关注点主要在请求和响应上。另外,还包括接口的安全、接口的性能等。常用的用例设计有等价类、边界值法等

一般测试用例的设计要从单接口参数的校验到整个业务功能点的验证,还可以验证一些安全性和异常情况

接口测试用例设计

 接口测试要点:

1.检查接口返回的数据是否与预期结果一致

2.接口测试结果检查通常需要通过SQL语句从数据库内进行查询确认

3.检查接口的容错性,假如传递数据的类型错误时是否可以处理

4.接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理

5.接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关

6.接口的安全性,外部调用的接口尤为重要,一般每个接口都要进行鉴权验证

接口测试用例模板

用例id    interface

所属模块  登录

测试点  正确的用户名和密码

前置条件 

接口url  http://www.

依赖接口  interface

header  'cookie'

method  get/post

body/params  'token;

预期结果 

接口验证点  code和msg

实际结果 

预期结果 

执行时间  

用Python完成接口测试

Requests库  Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库,完全满足HTTP测试需求

首先导入Request模块

import requests

利用requests发生get请求

import requests
#通过python模拟发送get请求(不带参数)
def test1():#resp是一个变量,该变量用于保存请求响应值对象resp=requests.get("http://www.baidu.com")print(resp.status_code) #响应的状态码信息print(resp.text)  #resp.text表示获取响应对象的文本信息def test2():# #get请求加参数# resp=requests.get('http://www.baidu.com/s?wd=python')# print(resp.text)# print(resp.url) #获取响应对象所对应的请求地址#方法二、通过定义一个字典,然后在请求中添加paramsdata={'wd':'python','name':'fanyun'}resp=requests.get('http://www.baidu.com/s',params=data)print(resp.url)print(resp.text)
if __name__=="__main__":test2()

利用requests发送post请求

requests添加或修改headers信息 

在请求头中添加cookie信息

利用session对象保持会话状态

文件上传不带参数 

文件上传带参数

request完成加密参数的请求

 关联参数

对接口响应内容的处理

cookie:存在于客户端,由服务器端通过set-cookie方法来进行设置

session:存在于服务器端的内存中,主要用于和cookie一起来验证客户端的登录状态

token:token是服务器端生成的一串字符串,用作于客户端进行请求的一个令牌。

token运行的原理:

1.客户端第一次登录成功时,由服务器端生成,并保存于服务器端的数据库中,服务器端再将token值返回给客户端

2.客户端拿到token之后,会进行保存(保存位置由服务器端指定)

3.后面客户端发送请求时,会将token值附带在请求参数中发送给服务器进行验证

4.服务器端收到客户端的请求之后,会取出token值与保存在本地数据库中的token值进行比较

5.如果两个token是一致的,说明用户已登录成功,当前用户处于登录状态

6.如果没有这个token值,说明用户没有登录过

7.如果token值已经发生改变,说明原登录信息已经失效,需要重新登录

token认证的优缺点:

1.无状态性

2.可重用性

3.安全性

接口测试返回值的处理

需要对返回的响应内容进行断言,从而验证接口工作是否正常

接口响应内容的三种形式: JSON格式的字符串  HTML源码  自定义的字符串

处理方式一:正则表达式来进行处理,这种方式适合于以上任意一种格式

处理方式二:lxml库进行处理,这种方式仅针对于返回内容是HTML格式的字符串

处理方式三:直接使用requests库自带的json方法来进行处理,这种方式仅针对于返回内容是json格式的字符串

正则表达式

 

 

 

 

使用Apifox完成接口测试

 

 

 

 

 

测试用例管理是将多个接口有序地组合在一起运行,用来测试一个完整业务流程

在命令行中执行Apifox

 

 

 

Apifox导出接口用例文档 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部