接口测试基础学习

接口测试基础学习接口测试快速上手资料

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

接口测试基础学习

(一)http协议基础
协议基础
请求消息
响应消息
(二)接口测试概述
(三)Requests库介绍
(四)抓包工具 fiddler
(五)URL参数
(六)响应消息
(七)Session机制
(八)待更新
问题记录

(一)http协议基础
协议基础
  1. HTTP 协议最大的特点是 通讯双方 分为 客户端服务端 。由于 目前 HTTP是基于 TCP 协议的, 所以要进行通讯,客户端 必须先 和服务端 创建 TCP 连接。
  2. 而且 HTTP 双方的信息交互,必须是这样一种方式:客户端 先发送 http请求(request)给 服务端,然后服务端 发送 http响应(response)给 客户端
  3. 特别注意:HTTP协议中,服务端不能主动先发送信息给 客户端
请求消息报文格式:

请求行 request line

GET /mgr/login.html HTTP/1.1
表示要 获取 资源, 资源的 地址 是 /mgr/login.html , 使用的 协议 是 HTTP/1.1

请求头 request headers

Host: www.baiyueheiyu.com
User-Agent: Mozilla/6.0 (compatible; MSIE5.01; Windows NT)
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
通常请求头 都有好多个,一个请求头 占据一行单个请求头的
格式是: 名字: 值

请求消息体 message body 用于存放数据信息,例如上传和修改信息

如果 HTTP 请求 有 消息体, 协议规定 需要在 消息头和消息体 之间 插入一个空行, 隔开 它们。
请求消息体中保存了要提交给服务端的数据信息。
消息体的格式
WEB API 请求消息体 通常是某种格式的文本,常见的有
Json
Xml
www-form-urlencoded

响应消息报文格式:

HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 08:08:27 GMT
Server: WSGIServer/0.2 CPython/3.7.3
Content-Type: application/json
Content-Length: 37
X-Frame-Options: SAMEORIGIN
Vary: Cookie

{“ret”: 0, “retlist”: [], “total”: 0}
状态行
HTTP/1.1 200 OK 里面有5种状态,此处略去

响应头

响应头 是 响应状态行下面的 的内容,里面存放 一些 信息

响应消息体
同请求的消息体

请求消息体一样,WEB API 响应消息体 通常也是某种格式的文本,
常见的有:
Json
Xml
www-form-urlencoded

(二)接口测试概述

接口测试(或者API接口测试),其实就是 对 软件系统 消息交互接口 的测试
消息交互接口软件系统其他软件系统 交互 的那部分。

接口测试就是

  1. 依据接口规范,写出测试用例
  2. 使用软件工具(postman,JMeter),直接通过消息接口 对 被测系统 进行消息收发
  3. 验证被测系统行为是否正确。
(三)Requests库介绍

Requests 库 是用来发送HTTP请求,接收HTTP响应的一个Python库

requests库的中文文档:https://cn.python-requests.org/zh_CN/latest/

Requests可以很方便的发送HTTP请求给服务器。比如

import requests
response = requests.get(‘http://mirrors.sohu.com/’)
print(response.text)

(四)抓包工具 fiddler

待更新

(五)构建http请求

URL参数
https://www.baidu.com/s?wd=iphone&rsv_spt=1
问号后面的部分 wd=iphone&rsv_spt=1 就是 url 参数,每个参数之间是用 & 隔开的。
上面的例子中 有两个参数 wd 和 rsv_spt, 他们的值分别为 iphone 和 1 。
url参数的格式,有个术语叫 urlencoded 格式。

构建请求头

指定参数 headers 的值为这个字典就可以了,如下headers = {

‘user-agent’: ‘my-app/0.0.1’,
‘auth-type’: ‘jwt-token’
}

r = requests.post(“http://httpbin.org/post”, headers=headers)
print(r.text)

构建消息体

当我们进行API 接口测试的时候, 根据接口规范,构建的http请求,通常需要构建消息体。
http 的 消息体就是一串字节,里面包含了一些信息。这些信息可能是文本,比如html网页作为消息体,也可能是视频、音频等信息。

Web API接口中,消息体基本都是文本,
文本的格式主要是这3种: urlencoded ,json , XML。
如下分别举例子进行解释:

第一种:xml的格式的消息体
如果设计者决定用 XML 格式传输一段信息,用Requests库,只需要这样payload = ‘’’

<?xml version=”1.0″ encoding=”UTF-8″?> 良好 30% 暂无 ”’ r = requests.post(“http://httpbin.org/post”, data=payload.encode(‘utf8’)) print(r.text)

第二种:urlencoded 格式消息体

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
r = requests.post(“http://httpbin.org/post”, data=payload) print(r.text)
第三种:JSON格式(两种格式)
r = requests.post(“http://httpbin.org/post”, data=json.dumps(payload)) 或者

r = requests.post(“http://httpbin.org/post”, json=payload) 推荐这种形式

json.dumps() # 进行编码,序列化的操作 Python对象—>字符串 用于在网络中传输
json.loads() # 进行解码,反序列的操作 字符串—>Python对象 用于在代码中操作

(六)响应消息

处理响应消息的2种通用的方法:
第一种:
r = requests.get(“http://www.python3.vip/”)
print(r.content) #获得原始的字节串 print(r.content.decode(“utf-8”)) # 在进行对字符串的解码操作,得到正确的格式
第二种:
r = requests.get(“http://www.python3.vip/”)
r.encoding =“utf-8” # 指定格式,获得文本
print(r.text)
print(r.encoding)

JOSN的响应的消息
使用的前提:知道返回的是JOSN格式的
r = requests.post(
“http://httpbin.org/post”,
data={“A”:1,“B”:2}
)
print(json.loads(r.content.decode(“utf-8”)))
以上得到的结果就是JSON格式的
举例子如下:
r = json.loads(r.content.decode(“utf-8”))
print(r.get(“headers”).get(“Host”)) #得到里面的关键信心
好处:将数据转换成josn方便的快速的处理
以上为原理的分析,以下为推荐使用的方法:
r = r.json()
print(r.get(“headers”).get(“Host”))

(七)Session机制

含义:会话的意识
原理分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Em3S8AHw-1643553641478)(en-resource://database/1446:1)]

从上图可以看出, 服务端是通过 HTTP的响应头 Set-Cookie 把产生的 sessionid 告诉客户端的。
客户端的后续请求,是通过 HTTP的请求头 Cookie 告诉服务端它所持有的sessionid的。
cookie 英文就是小甜饼的意思,这里表示一小段数据。

requests处理session-cookie

requests库给我们提供一个 Session 类。
通过这个类,无需我们操心, requests库自动帮我们保存服务端返回的 cookie数据, HTTP请求自动 在消息头中放入 cookie 数据

用法如下:

session = requests.Session()

创建 Session 对象 s = requests.Session() # 通过 Session 对象 发送请求 r
esponse = s.post(“http://127.0.0.1/api/mgr/signin”, data={ ‘username’: ‘byhy’, ‘password’: ‘88888888’ }) printResponse(response)

(八)
问题记录
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168443.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月11日 下午9:36
下一篇 2022年8月11日 下午9:46


相关推荐

  • autoconf产生Makefile流程

    autoconf产生Makefile流程生成Makefile的流程。参考http://www.ibm.com/developerworks/cn/linux/l-makefile/首先进入project目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下:1)运行autoscan命令2)将configure.scan文件重命名为configure.

    2022年6月3日
    39
  • python google auth totp_Google Authenticator TOTP原理详解(以Python为例)「建议收藏」

    python google auth totp_Google Authenticator TOTP原理详解(以Python为例)「建议收藏」如果有疑问,请点击此处,然后发表评论交流,作者会及时回复(也可以直接在当前文章评论)。——-谢谢您的参考,如有疑问,欢迎交流一、原理详解(图片可以点击然后放大查看)二、验证1、下载Google谷歌身份验证器。2、通过Python的qrcode和pyotp模块生成二维码。3、然后使用下载的谷歌身份验证器扫描生成的二维码如果没有谷歌服务,则选择输入秘钥,在账户明处填入name参数,在秘…

    2025年7月2日
    4
  • spi时序图怎么分析,怎么看懂spi时序图

    spi时序图怎么分析,怎么看懂spi时序图我做产品的时候 最怕就是做 IIC 和 SPI 的通信 这两种协议时序哪怕是延时时间有误差 都有可能导致通信不上 出现问题的时候 如果没设备也很难排查问题到底出在哪里 有时候这个产品写好的时序程序 换一个单片机用同一个程序移植过去就不行了 而且很多公司都没有设备可以调试这些协议 大多数时候都是完全靠蒙 今天就拿新手比较头痛的 SPI 来进行时序图的分析和讲解 看不懂你打我 我记得第一次 SPI 通讯的时候 完全是照抄网络上的程序 因为芯片手册的时序图看起来太可怕了 根本看不懂

    2026年3月18日
    2
  • openCV基本绘图函数—-画圆函数cvCircle

    openCV基本绘图函数—-画圆函数cvCircle#include #include#include usingnamespacecv; intmain(intargc,char**argv){    IplImage*img=cvLoadImage(“D:\\123\\2.jpg”,1);    cvCircle(img,cvPoint(120,120),90,c

    2022年7月24日
    12
  • 登顶全球榜首!海淀企业发布新款开源大模型

    登顶全球榜首!海淀企业发布新款开源大模型

    2026年3月12日
    2
  • Pycharm Qt Designer的使用示例

    Pycharm Qt Designer的使用示例PycharmQtDes 的使用关于 QtDesigner 各组件的介绍可参考 QtDesigner 常用部件介绍 里面介绍了 QtDesigner 各部件的名字 QtDesigner 的使用很简单 直接根据自己所需把各部件拖入框内 更改各组件名称 大小 位置等 例如 去除文件夹中模糊的图片但是你会发现转换为 py 文件运行后并没有出现设计好的界面 这时需要在该文件夹下重新建立一个

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号