当前位置: 代码迷 >> 综合 >> 接口测试入门:Postman
  详细解决方案

接口测试入门:Postman

热度:6   发布时间:2023-12-07 02:31:41.0

文章目录

    • 一、Postman的基本介绍
    • 二、接口测试的基本流程
      • 接口测试流程
    • 三、Postman使用
      • 接口收发包流程
      • HTTP接口测试
      • postman接口测试实战
      • 接口测试实战 :POST方法
    • 四、使用Postman的进阶功能:断言
    • 五、测试管理-测试集与数据驱动
      • 测试集执行
      • 测试集的配置
      • 测试集结果
      • 测试结果的响应信息
    • 六、进阶实战--cookie篇
      • 使用Cookie的方法
    • 七、进阶实战--token篇
    • 八、持续集成信息
      • newman run 测试集脚本文件
      • 测试报告的获取
      • 定时任务执行脚本
      • Jenkins持续集成
    • 九、不常用功能

一、Postman的基本介绍

在这里插入图片描述在这里插入图片描述
接口请求面板:
在这里插入图片描述

接口测试:
http://www.tianqiapi.com/index/doc
1)根据接口设置的参数,验证结果是否符合要求
在这里插入图片描述
2)通过组合不同的参数实现测试用例的设计
在这里插入图片描述
3)一个请求中涉及的内容说明
在这里插入图片描述

字段 说明
Params 参数
Authorization 接口鉴权的方式
Headers 使用的头域
Body 参数携带的各种方式
Pre-requestScript 接口发起请求之前发起一些JS的脚本
Tests 接口请求之后完成的脚本,通常用于断言的操作
Settings 环境变量设置
body 返回体
cookies cookies值
headers 头域
testresult test执行结果的记录

二、接口测试的基本流程

  • 接口测试:接口测试就是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性
  • 目的:接口测试通常能够对系统测试得更彻底,更好地保障产品质量,同时越早越底层地发现问题,修改和维护的代价也越小。
  • 如何做接口测试:根据接口文档设计用例,调用接口,验证结果
  • postman是调用接口,验证结果

接口测试流程

  1. 获取接口信息
    通过接口文档和抓包来获取接口的基本调用方式和返回
  2. 接口测试用例设计
    根据获取到的接口信息,按照接口测试用例设计方法,设计参数和预期返回结果
    通过等价类或边界值设计测试用例
    1)能够实现接口的功能:通过改变某一个参数实现对应的功能
    2)去掉某一些参数勾选,查看是否会有对应的信息
  • 组合所有的参数,查看对应的返回是否为我们必要的信息 查看对应的参数是否为必填的选项
  • 输入错误的参数信息,是否出现异常信息
  1. 接口发包
    使用工具或编程向接口传递参数
  2. 返回信息验证
    获取接口返回的结果,进行解析和验证

三、Postman使用

接口收发包流程

百度IP接口实战 接口地址:https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php
在这里插入图片描述

HTTP接口测试

  • 请求
    填写接口URL—设置HTTP方法—设置请求头域----填写请求参数(请求体)

  • 响应验证
    HTTP状态码;收到接口响应;检查返回头域;查看返回主体内容(响应体)

1)请求
Postman发起接口请求
使用抓包工具获取接口信息
重点关注:URL、方法(GET、POST等)、头域、参数
在这里插入图片描述
注意头域的使用,接口是否需要对应的头域进行强校验
头域添加参数:Refer

具体的操作:
在Postman创建request,关注以下的信息:方法、URL、参数、头域
在这里插入图片描述
2)响应信息
响应信息中具体要了解的地方
在这里插入图片描述
在Postman的表现如下:

关于响应体的基本格式查:
在这里插入图片描述
响应信息需要关注的地方
响应体
在这里插入图片描述
Test Result 根据上面设计的Test来进行:设置结果断言

postman接口测试实战

一定需要头域的请求
有一些接口,不需要强行校验头域

需要设置头域的接口实战:
腾讯课堂评论接口,获取信息时需要添加头域referer,才能获取到正确的评论信息。
接口地址:https://ke.qq.com/cgi-bin/comment_new/course_comment_list?cid=315793&count=10&page=0&filter_rating=1&bkn=1588724244&r=0.42442113716782326
访问地址:https://ke.qq.com/course/315793?taid=7816690155180433
直接发送不带头域的返回结果不是实际需要的
在这里插入图片描述
这个时候需要考虑是否是头部中的信息是否是我们需要的,通过验证refer是需要的

用于指定请求的来源,防止盗链其他网址获取信息,防止查重
使用chrome开发者工具抓包、获取url,方法、referer等信息,查看哪些参数是必要的,这里发现referer是必须的
在这里插入图片描述
GET: 协议名:服务器域名/文件路径资源路径? 后面是参数格式

接口测试实战 :POST方法

根据不同的Content-Type设置参数的格式
POST:from data 是放置在body进行请求的

请求体与Content-Type头域 (Request-Header)

postman Request-Header:content-type 作用
x-www-form-urlencoded x-www-form-urlencoded 以键值对形式发送的表单参数,同时参数会携带在url中
form-data multipart/form-data 既可以发送键值对也可以进行文件参数传递。
raw 原始格式编辑各Content-Type类型对应的参数格式 直接按请求体的格式来进行内容发送。
binary 选项用于发送文件内容请求

在这里插入图片描述

  • x-www-form-urlencoded
    1)会自动添加一个 header
    2)会将填写的内容携带到url中,可以手动添加到url中去不影响,不用专门选择选中body中的x-www-form-urlencoded
    在这里插入图片描述
    查看响应的信息,可以看到编码的转换工具,获取登录状态信息

  • form-data
    文件上传实例:http://www.testingedu.com.cn:8000/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html
    在这里插入图片描述
    在这里插入图片描述
    如果不勾选文件:则会发生错误
    在这里插入图片描述
    一定要注意传递参数的格式,content-type选择方式的使用。

  • raw:使用原始的格式 不同的格式
    在这里插入图片描述

Json格式的请求发包
Json格式请求发包实战 接口地址 :https://b.zhulogic.com/designer_api/account/login_quick_pc
网站访问地址:添加链接描述
选中传参格式为 raw中的json 格式
在这里插入图片描述

四、使用Postman的进阶功能:断言

1、环境变量与全局变量
接口测试过程中,经常需要使用已经设定好的参数或从其他接口的返回中获取变化的参数。
Postman:变量 实现该场景
环境变量:根据具体的接口进行使用
全局变量:供所有请求使用

变量的添加
在这里插入图片描述

全局变量的添加和使用
选中:Globals 填写对应的变量名称和初始值
在这里插入图片描述
在这里插入图片描述
在需要使用的地方用“{ {“选中即可:带G开头的均为全局变量,E开头为组环境变量
在这里插入图片描述
环境变量添加
在这里插入图片描述
点击Add:填写环境变量的名称 填写改组环境变量的变量名称以及值
在这里插入图片描述
在使用的地方选中E开头的即可,环境变量的优先级高于同名的全局变量
在这里插入图片描述

2、测试沙箱实战
测试沙箱常用的功能

Postman测试沙箱:结合JS脚本完成测试中的功能,在请求发起前实现部分测试操作
常用功能:
··· 请求前脚本(pre-request scripts)设置请求前置操作如设置变量等
···请求后对状态码、响应头、响应正文等信息进行断言操作

请求前脚本:
在这里插入图片描述
点击get an environment variable
在这里插入图片描述
通过Pre-request Script:进行js脚本的设置
在这里插入图片描述
请求前的脚本:一般是设置环境变量
var city= pm.environment.get(“cityname”);
console.log(city);
pm.environment.set(“cityname”,“长沙”);
通过控制台查看对应的信息 可以看到环境变量发生了更改,显示的信息也是
在这里插入图片描述

请求后的验证 断言函数

Test菜单
1)状态码
点击右侧的这个,就会自动添加测试用例来到TEST中
在这里插入图片描述
进行校验:测试用例需要做的事情function 进行断言
在这里插入图片描述
获取结果查看
在这里插入图片描述
验证失败的情况,测试用例的名称可以自定义
在这里插入图片描述
2)body信息文本

以下针对响应体验证内容获取的信息
在这里插入图片描述
pm.test("testcasename”,function(){
pm.expect(pm.response.text()).to.include(“string”);
});
});
具体操作如下:包含的文本
在这里插入图片描述
3)使用json格式验证
验证某一个参数对应的值应期望的值
pm.test("testcasename“,function(){
var jsonDate = pm.response.json();
pm.expect(jsonData.city).to.eql("长沙”);
});
在这里插入图片描述
4)等于某一个字符串

在这里插入图片描述
在这里插入图片描述
pm.test(“返回体的全部验证信息”, function () {
pm.response.to.have.body("{“status_code”:1001,“message”:“验证码错误”,“data”:null}");
});

5)校验头域中的内容
pm.test(“Content-Type is present”, function () {
pm.response.to.have.header(“Content-Type”);
});
在这里插入图片描述
6)响应时间的测试
pm.test(“响应时间”, function () {
pm.expect(pm.response.responseTime).to.be.below(10);
});
在这里插入图片描述
7)Post方法中响应码
pm.test(“Successful POST request”, function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

8)html返回文本的校验
pm.test(“casename”,function(){
pm.expect(pm.response.text()).to.include(“ddd”);
});

json参数的具体编写
pm.test(“Your test name”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
console.log(jsonData[1].varname);具体根据自己测试的过程中想要验证的信息字段
在这里插入图片描述
jsonData.result.items[0].first_comment:
在这里插入图片描述
使用 循环可以输出到后台中获取对应的返回信息进行校验
pm.test(“返回评论列表”, function () {
var jsonData = pm.response.json();
for(var i = 0; i < 10; i++){
console.log(jsonData.result.items[i].first_comment);
}
pm.expect(jsonData.result.items[0].first_comment).to.eql(“老师讲的很精彩,对自己帮助很大!”);
});

在这里插入图片描述

五、测试管理-测试集与数据驱动

测试集执行

点击run
在这里插入图片描述

测试集的配置

在这里插入图片描述

测试集结果

在这里插入图片描述

测试结果的响应信息

在这里插入图片描述
2、数据驱动方式
pm.test(“验证返回中city的值为武汉”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.city).to.eql(“data.cityname”);
});
pm.test(“地址是美国”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data[0].location).to.eql(data.location);
});
这里data.cityname从文件中获取数据
测试数据如下:

ipLoc location cityname
3.3.3.3 美国 北京
1.1.1.1 澳大利亚 上海
.113.125.116.131 山东省济南市 电信 成都

在excel中编写文件并转换为相对应能够被postman接收的文件格式:json 或 CSV格式
!! 为了防止出现乱码的情况,需要使用text编辑文件转换为utf-8编码
!!文件中第一行必须是接口请求的变量名,后续每行填写本次执行使用的变量值
点击Collection Runner:显示以下的信息
在这里插入图片描述
其中数据预览在下面显示
在这里插入图片描述
数据驱动结果断言情况显示
在这里插入图片描述

六、进阶实战–cookie篇

在接口测试中某些接口的调用需要使用已有cookie,Postman操作cookie可以有两种方式。 Postman接口请求使用Cookie

使用Cookie的方法

  1. 直接在头域中添加cookie头域,适用于已知请求时的cookie头域的情况
  2. 使用Postman的cookie管理机制,既可以手动添加,同时Postman也会将操作流程 中获取的参数自动保存,因此可以通过调用前置接口来完成cookie获取。

案例:
使用电商项目进行测试,在登录接口完成登录之后,通过购物车接口获取购物车中的信息。 由于购物车接口需要使用登录后的cookie保持登录状态。 注意:电商网站访问地址发生了变化,
新网址:http://www.testingedu.com.cn:8000/index.php
登录接口: http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=do_l ogin&t=0.5404187243051779
购物车接口: http://www.testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=head er_cart_list

1)已知cookies信息,将其复制到头部即可,基于cookies的值是固定的
在这里插入图片描述
在Headers添加Cookies即可
2)使用postman的cookie管理机制添加cookie
在这里插入图片描述
在开发者工具中可以看到对应的cookies值,获取得到
在这里插入图片描述
对应在postman中添加cookies值如下
填写url中的域名:www.testingedu.com.cn
然后根据模板,填写对应的name值和value即可
以下即为postman的cookies管理机制
在这里插入图片描述
尝试cookies,确定某一个是需要的

正常的流程
1)登录操作(获取Cookies值)+发起请求获取购物车的信息
2)采用测试集的将两个接口结合在一起进行(Collections),测试结果,pm.response.text()
3)先调用前置的接口保留下来的cookies,再进行调用直接就可以运行。

七、进阶实战–token篇

  1. 接口测试项目实例
    获取token值,保存到环境变量供给其他接口调用
    数据驱动测试+获取信息验证信息
  2. 接口测试项目实例 使用接口测试项目实例,注册、登录、获取用户信息、登出接口均需要获取auth接口获取 到的token进行使用,因此通过auth接口返回信息获取token之后,存为变量供后续接口 调用。
接口 url 说明
鉴权接口 http://testingedu.com.cn:8081/inter/HTTP/auth 该接口返回一个token值,之后的所有接口请求均需添加token头域使用该token
注册接口 http://www.testingedu.com.cn:8081/inter/HTTP/register
登录接口 http://testingedu.com.cn:8081/inter/HTTP/login 说明:该接口返回一个userid,在请求用户信息时使用,因此保存为变量。
获取用户信息接口 http://www.testingedu.com.cn:8081/inter/HTTP/getUserInfo 说明该接口需要使用登录获取的userid,因此使用保存的userid变量值。
注销接口 http://testingedu.com.cn:8081/inter/HTTP/logout

数据驱动方式同上面内容相似这里只是要注意headers要添加token进行验证

八、持续集成信息

首先安装nodejs,用来支持newman,安装newman工具
newman官方文档:添加链接描述
关于newman的介绍:添加链接描述
在这里插入图片描述
1)将postman中的测试集导出成newman能够支持的文件

2)在postman中导出测试集文件
导出测试集的.json文件
在这里插入图片描述

导出环境变量.json文件
在这里插入图片描述

newman run 测试集脚本文件

参数选项如下(全部的参数选项命令:newman run -h)

  • -e,–environment 环境变量脚本
    案例:newman run C:\Users\Administrator\Desktop\postman\环境变量.postman_collection.json -e C:\Users\Administrator\Desktop\postman\环境变量.postman_environment.json
  • -g,–global 全局变量脚本
  • -d,–iteration-data 指定使用的数据驱动文件
newman run C:\Users\Administrator\Desktop\postman\Http接口信息(token).postman_collection.json  -e C:\Users\Administrator\Desktop\postman\环境变量.postman_environment.json -d C:\Users\Administrator\Desktop\postman\testDDT.csv
  • -n 指定测试集循环次数iterations

测试报告的获取

如果想要持续集成,让脚本自动执行,可以获取以下的测试报告格式

  • cli格式为在cmd客户端呈现的报告模板,newman默认使用该格式。
    newman测试报告.cli格式
    在这里插入图片描述

  • json格式可以导出json格式的报告,通过-r json --reporter-json-export 参数指定报告生成的文件路径

案例:

newman run C:\Users\Administrator\Desktop\postman\Http接口信息(token).postman_collection.json  -e C:\Users\Administrator\Desktop\postman\环境变量.postman_environment.json -d C:\Users\Administrator\Desktop\postman\testDDT.csv -r cli,json --reporter-json-export C:\Users\Administrator\Desktop\postman\testreporter.json

以下为报告文件
在这里插入图片描述

  • html格式可以导出html格式的报告,通过-r html进行设置, 并加上–reporter-html-export参数指定报告生成的路径。
    命令:npm install -g newman-reporter-html 完成导出html测试报告插件
    案例:C:\Users\Administrator>newman run C:\Users\Administrator\Desktop\postman\Http接口信息(token).postman_collection.json -e C:\Users\Administrator\Desktop\postman\环境变量.postman_environment.json -d C:\Users\Administrator\Desktop\postman\testDDT.csv -r cli,html --reporter-html-export C:\Users\Administrator\Desktop\postman\testreporter.html
    在这里插入图片描述
    可以看到如下的测试报告文件
    在这里插入图片描述

定时任务执行脚本

在实现了newman对测试集的命令行运行之后,可以通过编写bat脚本,将其设 置为windows定时任务,以完成测试脚本的定时运行。
1、编写bat脚本 (批处理运行脚本)
将newman运行测试集的命令编写为bat脚本保存
2、设置定时任务 在计算机上右键->管理,在弹出菜单里的任务计划程序里创建定时任务配置执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Jenkins持续集成

在这里插入图片描述
在这里插入图片描述

每天每月每星期凌晨3点
执行批处理命令
在这里插入图片描述
在这里插入图片描述

九、不常用功能

  • 抓包工具
    对接口进行测试的第一步是获取接口信息,最好通过接口文档获取,并且通过抓包确认。 抓包工具: fiddler、charles、chrome浏览器开发者工具,也可使用postman进行抓包。
    在这里插入图片描述
    设置浏览器使用postman配置的 127.0.0.1:5555代理进行访问,抓包信 息就能在指定的文件夹中显示。
    抓包设置代理+在postman中进行抓包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 测试脚本
    在这里插入图片描述

  • 鉴权方式
    在这里插入图片描述

  • 之前有token、cookies

在这里插入图片描述