【精通Postman接口测试】03-结果断言实战 + 数据驱动保姆级教程

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🎯 你正在阅读「接口测试从入门到跑路」系列文章 🎯

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🔥 弹简特 个人主页

❄️ 个人专栏直通车:

靠热爱去书写自己,靠勇敢去书写生活!

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨


🌟 博主简介:


文章目录:

前言

👋老铁们,玩 Postman 做接口测试的时候,断言绝对是必备干货神器!有了它,就能轻松判定接口到底通没通、返回数据正不正常~

还有大家常用的数据驱动用法,我全都给你们安排上了🙌

全程保姆级手把手教学,配图 + 实操步骤一步不落下,每个功能用法都拆解得明明白白,新手也能轻松看懂!话不多说,咱们直接开整~👇

一、Postman接口测试结果断言

截此为止,我们测过的所有接口,都没有添加断言,此时你是不容易看出他是否是对还是错的。

比如说上一篇博客中,我们的批量运行里面,它的结果也没有显示是对还是错,因为你没有添加断言。


一般我们的断言有两种:

  • 状态断言:断言它的响应码
  • 业务断言:断言它的业务数据
    一般一个接口,我们都用这两种

1、Postman中的断言函数

如图所示,点击Postman里面的脚本,你会看到对应的函数,以及你点击它之后会生成对应的代码。

1.1 Status code: Code is 200

意思检查 HTTP 状态码是不是 200

作用:确认服务器正常处理了你的请求,没报 404、500 之类的错误。就像打电话,对方接起来了,而不是"您拨的电话已关机"。

1.2 Response body: Contains string

意思检查返回的内容里有没有包含某个字符串

作用:不要求返回值一模一样,只要里面有你要的关键词就行。比如返回了一大串 HTML,你能确认里面有"登录成功"四个字。

1.3 Response body: JSON value check

意思检查返回的 JSON 里某个字段的具体值

作用:这就是针对 JSON 接口的精准断言。比如 {"code":0},你必须确认 code 就是 0,而不是别的。

1.4 Response body: Is equal to a string

意思检查返回的整体内容恰好等于一个字符串

作用:严格匹配,一字不差。适合返回值特别简单且固定的情况,比如某个接口只回一个纯文本 "OK"。

1.5 Response headers: Content-Type header check

意思检查响应头里有没有 Content-Type,或者它的值是什么

作用:确认服务器告诉浏览器"我返回的是 JSON"还是"一堆 JSON 数据",防止前端接收到格式不对的内容。

1.6 Response time is less than 200ms

意思检查接口响应时间小于 200 毫秒

作用:性能红线。超过这个数,你就可以喊开发过来看日志了。

2、实战演示

2.1 案例1:一般对于返回值是动态的我们就看一下他是否包含

1) 状态断言

跟着图中的步骤做

a、点击代码片段

b、选择状态码是不是200的代码

2) 业务断言

我们首先来看:他后端返回的token值,是不固定的

这个思路就是给我这个断言你有没有包含token值

a、点击响应包含某字符串代码

b、然后修改你的名字,将包含的名字改为你后端返回的access_token

结果

2.2 案例2:对于返回值是固定的我们就看他是否等于(系统值就是固定的)

1) 状态断言

a、点击代码片段,先检查状态码

2) 业务断言

a、测试返回结果有固定值

b、然后就找一下有JSON的那个代码片段,他是用来看结果是否等于某一个值的

c、去判断是否等于你的那个值

结果如下所示:

3、公共断言

什么叫做公共断言?它也叫做全局断言,比如我们上周的两个例子中,你每一个里面都去断言它的状态码为200,那你想了,这个我们可不可以提取出来呢?可以的,我们把它提取出来,它就是一种公共的断言,到时候他会让你每一个接口都去添加这个断言。

3.1 公共断言加在哪里才能让各接口共用

我们是加在项目级别的脚本里面,如下步骤👇

1)点击项目名->选择脚本
2)把你的代码粘贴上去

那此时你测试的时候,其他接口都会有这个状态断言

4、精确断言

首先回顾我们第1篇博客里面的项目实战,创建一个标签,我们当时因为标签名不重复的原因,我们给他加了一个随机数。

需要了解一下项目实战的铁子么课参考👉:项目实战

你看图👇

我们之前是给它拼接上了一个随机函数的,添加成功之后,它会返回我们指定的值,如图所示👇

4.1 思路

思路 :现在我们用断言,要精准的匹配到这个广东后面加一个随机数的值,首先你是做不到的。

因为我们那个随机数,它是随机生成的,你很难做到精准匹配,这时候怎么办呢?

我们不用那个系统自带的随机数函数:我们自己写一个,思路就是在请求之前,自己先生成当前系统的时间,并且我们把这个时间设置为一个集合变量,供给这个项目使用,然后我们构造请求体的时候去集合变量中取到这个系统时间,最后请求完之后呢,我们再取这个集合变量中的系统时间来进行精准断言。

4.2 实操

1)在请求前自己先生成一个系统时间

设置具体的值

2)构造请求的时候取到这个时间
3)断言的时候从集合变量中将这个随机数取出来

首先点击对应的代码

点击从集合变量中获取到的随机数函数

开始拼接精准字符串

4)测试看是否成功

注意get函数中是字符串

修改之后

结果:


5、加断言之后批量运行有结果了

我们加了断言之后,我们的批量运行就有是否通过的结果了,所以可以看出我们的断崖还是挺重要的。

批量测试的博客我也总结的很详细,可参考👉批量测试

运行项目:

查看结果:


二、Postman接口测试数据驱动

Postman中数据驱动其实用的比较少,相较于的话,我更喜欢用Jmeter中的,

为什么Postman中数据驱动其实用的比较少?

因为它所有的接口共用同一个数据文件,比如你有100个接口,那你这100个接口就只能用一个数据文件,这是比较不太好用的。

我们的数据驱动有两个方式

1、方式一:通过批量运行中的数据文件来实现数据驱动(只能测单个接口,不要选择多个)

这种方式很不可取,我们基本不用,原因:

  1. 所有的接口只有一个数据文件
  2. 会导致所有的用例执行多次

因此我们在使用的时候,我们一般批量运行,选一个接口就行了,千万别选多个接口,你选完这个接口,然后去改他的数据文件,再搞下一个接口,比较麻烦。

1.1 实操

1)测试用例
用例编号 用例名称 grant_type appid secret 预期 HTTP 状态 预期业务码 (errcode) 说明
TC01 正向-完整参数 client_credential wx9335efa56e8cbb64 0750c9411423c510fd0c2a1acdc32aa4 200 0 返回 access_token
TC02 反例-缺少 appid client_credential 缺失 0750c9411423c510fd0c2a1acdc32aa4 200 41002 appid 缺失
TC03 反例-缺少 secret client_credential wx9335efa56e8cbb64 缺失 200 41004 secret 缺失
2)根据测试用例编写数据驱动文件

Postman中的数据驱动文件的格式是.csv

我们先创建一个.csv文件,👇

向里面写入我们的数据

csv 复制代码
grant_type,appid,secret
client_credential,,e40a02f9d79a8097df497e6aaf93ab80
client_credential,wx74a8627810cfa308,
client_credential,wx74a8627810cfa308,e40a02f9d79a8097df497e6aaf93ab80

文件说明

  • 第 1 行:grant_typeappidsecret 三列头。
  • 第 2 行:反例1 --- appid 留空,secret 正常,对应错误码 41002
  • 第 3 行:反例2 --- secret 留空,appid 正常,对应错误码 41004
  • 第 4 行:正例 --- 三个参数齐全,能正常返回 access_token

3)在Postman中选择数据文件

右键项目名--【选择run】--【选择对应要驱动的接口】--【选择数据文件】--【选择执行次数】


【选择你对应的接口,不要选全部】


【选择数据驱动文件】--【然后记得执行你的用例次数:3次】

4)从数据文件中去取值

使用{``{字段名}}取值

5)开始测试

查看结果

注意哦:我们之前是加过断言的,所以你会很容易看出时候否测试通过

因此断言真的很重要

2、方式二:通过文件结构实现正反例的测试(非数据驱动,但可达测试效果)

第1种方式很不合理,我们基本不用,但是我们可以用第2种方式,但是这种方式不是数据驱动,所以这种方式没有数据文件,我们是需要去写正反例的测试接口,然后运行的时候就批量运行这些测试接口,我们看实操就懂了👇

2.1 实操

1)首先右键项目,新建一个目录
2)将我们的获取token接口的正反例放到里面进行管理
3)同样复制一样的获取token接口的两个接口,并起名字


起名字

4)构造正反例请求
反例1:没有appid

断言:方便测试报告中显示

js 复制代码
//断言状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

//断言没有参数appid的时候返回值是否有41002
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include(41002);
});
反例2:没有secret

断言:方便测试报告中显示

js 复制代码
//断言状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

//断言没有参数appsecret的时候返回值是否有41004
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include(41004);
});
正例:完整参数

断言:方便测试报告中显示

js 复制代码
//断言状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

//断言参数完整的时候返回值是否有token
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("access_token");
});
5)最后一步:批量运行这三个测试用例

右键项目名--【run】--【选择要运行的接口】

或者:右键你的目录--【run】


最后看结果:


ok,到这里,我们本期的结果断言和数据驱动就结束咯~


三、写在最后

🎯 看到这里,辛苦啦!歇一歇,喝口水,让眼睛放松一下
这篇笔记我写了很久,如果对你有哪怕一点点帮助,请点一下「关注」
后面我还会继续分享很多自学干货笔记,都是自己边学边总结的,依然会是零基础能看懂、每一步都截图的那种详细笔记
我是学生,没什么能送你的,只能保证每一篇都认真写、不藏私。
我能给的,就是一篇一篇亲手整理的、零基础也能看懂的干货笔记。
你的每一次关注,都是我继续写下去的动力。
谢谢你的时间,我们下一篇笔记见 👇
(如果这篇笔记有写错的地方,也请一定在评论区告诉我,我会第一时间修改)

下一篇见咯,兄弟们~~


相关推荐
测试员周周5 小时前
【免费福利】AI测试:测试技能包进阶:造数、压测、视觉回归、CI 全流程串联
开发语言·人工智能·python·功能测试·测试工具·ci/cd·测试用例
PhotonixBay8 小时前
表面粗糙度怎么测才准?ISO 25178标准三维面积测量标准解析
人工智能·测试工具
KK溜了溜了9 小时前
wireshark and tcpdump抓包
测试工具·wireshark·tcpdump
老神在在0011 天前
JSON Schema
测试工具·json
小杍随笔1 天前
【FlyEnv v4.15.0 重磅更新!新增 FrankenPHP、CliProxyAPI、Numa、Rnacos 模块,开发效率再升级】
测试工具·开发环境管理工具
软件测试慧姐1 天前
软件测试常见面试题汇总(2026版)
软件测试·测试工具·面试
weixin_419658312 天前
基于 Trae 和 Postman-MCP-Server 接口自动化测试
测试工具·postman
弹简特2 天前
【精通Postman接口测试】04-Postman的CLI命令+Jenkins和Newman+Allure+Jenkins自动化接口持续集成
自动化·jenkins·接口测试·postman
weixin_419658313 天前
Postman-MCP-Server 的构建以及在 Trae 中的配置方法
测试工具·postman