如何使用postman判断返回结果是否正确

news2024/9/30 5:25:12

针对一个接口,我们在知道参数以及参数对应的结果时,可以通过postman进行判断,验证返回数据是否与预期数据相等。这样可以使我们的接口测试更加的方便简洁。

1、准备数据。

postman可以接受的文件格式如图所示,一般来说可以将我们需要进行参数化的数据存储在excel表格中,如下图所示,postman在读取数据的时候,根据第一行的列名读取,并且在excel,针对多个参数可以使用逗号隔开,没有txt那么麻烦。

图中,city和income是接口需要的参数,Insurance_ability和score是预期的返回的值,当然也可以跟接口返回的参数名不对应。

postman中读取数据的时候,会将表名默认的认为是data。所以在读取数据的时候,比如读取city这一列的数据,则书写为data.city。postman会按照data.city的读取方式读取数据直到数据为空。

需要注意的是:使用excel保存的数据,在保存的时候请另存为csv格式,并且使用Notepad++将其转换为utf-8的格式,不然在postman中识别是乱码格式,对数据的判断造成失误。

2、postman参数设置

此接口中,我们需要参数化的参数是city和income,针对这两个参数,使用{{}}包括。

3、请求发送前,参数设置
我们是需要对表格中的数据进行参数化,所在在发送请求之前,我们要让postman能够读取到文件中的数据,在postman中,Pre-request Script中的语句postman会在请求发送之前执行,所以读取语句的操作,我们放在这里执行。

 

代码语句进行读取操作。

var city = data.city;
var income =data.income;

4、在Tests中进行判断操作
第四步应该是最重要的操作,现在我们已经在发送请求之前读取了文件的数据,那么该如何进行判断呢?这步我们在Tests中进行,Tests会在请求之后执行,Tests也称之为断言。

如何去判断返回的数据是否正确的思维是:

1、将文件中的预期结果设置为环境变量

2、获取返回的数据

3、进行判断

var score=(data.score);//获取文件中数据
var Insurance_ability=(data.Insurance_ability);//设置成环境变量
pm.environment.set("score",score);
pm.environment.set("Insurance_ability",Insurance_ability);
 
 
if(tests["code is 200"]=responseCode.code===200){ //[postman断言输出,返回200打印code is 200
    var d = JSON.parse(responseBody); //将返回数据解析成json格式
if( d.得分==score&&d.保险能力==Insurance_ability){ //将返回数据与环境变量进行对比,如果同时满足
    var a=1; //因为pm.test语句中含有function()设置满足条件是a=1,
    pm.test("测试通过",function(){ //if中判断为真,则断言输入测试通过
        if(a==1);
    });
}
else{
    var a=0;
    pm.test("测试不通过",function(){
    if(a===0);
    });
}
 
}else if(tests["code is 500"]=responseCode.code===500){//状态为500时断言输出
    
}else{
    tests["code is 400"]=responseCode.code===400 //状态为400时断言输出
}

5、参数化执行

以上工作准备完成之后,我们就可以开始正式的参数化执行了

1、点击Runner

2、接口选择,环境准备,选择文件

3、点击Run,开始执行

4、检查执行结果

在数据跑完之后,我们可以直接在页面看到结果,其中pass和failed是代码tests中断言通过的数量,其中,我们可以看到测试通过,和code is 200的提示,

我们看到failed数量为1,我们找到该请求

看到coed is 200 状态为FALL,coed is 500状态为pass, 可以判断该请求状态码是500

此时就可以查看该请求的请求地址和返回参数,再对比数据,查看具体是哪里的错误。

打开请求地址和返回内容,可以看到是参数我们传递错了,该原因应该是我表格中这行数据为空,所以他直接传递的{{ciry}}和{{income}},

总结
以上就是如何使用postman判断返回结果是否正确的左右过程,如果有任何写的不好的地方,望指教。

除此之外,也遇到问题,比如在数据量大的时候,再去对比结果,就会比较麻烦,并且tests中的输出只是一个断言输出,无法通过该运行的通过或者不通过去判断有多少用例失败,所以这个是还需要研究的。

大家也可以通过在tests中的各种操作和打印使得自己能通过判断输出就判断出是哪里数据的问题。

更新
小编写了一个小时的更新,按了下谷歌的control+s,页面就崩, 小编很无奈,只能重新写。

之前我们已经实现了对预期数据和返回数据做一个基本的判断,但是不能简要的从运行结果查看到是通过了多少测试用例数据,没有通过多少测试用例数据,并且去查找错误数据的时候还是很麻烦。

查阅资料发现,针对tests语句,我们是可以设置他的结果的,就是设置通过或者不通过,所以我们新的思路就是:

1、对预期结果和返回结果进行判断

2、判断相等则设置tests语句为true

3、判断不相等则设置tests语句为false,即失败,并且打印参数、预期结果、实际结果,这样我们简要的从runner运行界面就知道我们那些数据不对,就不用花大量的时间查找那些数据出错。

语句如下:

tests["测试通过"]=true;   //设置为true,运行时表示pass
tests["测试不通过"]=false;  //设置为false,运行时表示fail

实现整个判断的语句如下:

var city = data.city;
var income =data.income;
var score=(data.score);
var Insurance_ability=(data.Insurance_ability);
pm.environment.set("score",score);
pm.environment.set("Insurance_ability",Insurance_ability);
 
var d = JSON.parse(responseBody);
 if(d.得分==score&&d.保险能力==Insurance_ability){
        tests["测试通过"]=true;
    }else{
        tests["测试不通过"+"(输入参数"+city+'、'+income+")预期结果(得分="+score+"、保险能力"+Insurance_ability+")(实际结果得分="+d.得分+"、保险能力="+d.保险能力+')']=false;

}

如图,数据表中,存在19个用例,通过17个,失败两个,并且针对失败的用例,清晰的可以看到参数、预期结果以及返回结果。

如果数据较多的时候,我们可以直接通过运行结果页面的红色方块(失败区域)展示的用例查找失败的数据。

代码更新:

针对接口出现的问题,简要的分为三种情况,服务器问题、客户端问题、数据校验,所以更新了一下验证代码

var state=responseCode.code;//获取返回状态
var number=(state.toString()).substr(0,1);//将返回的number类型转为string类型,并获取第一位
switch(number){
case '2':
    test();
    break;
case '4':
    clientQue(); //4开头的状态,简单定义为客户端问题
    break;
case '5':
    serverQue(); //5开头的状态,简单定义为服务器问题
    break;
default:
    tests['测试不通过,状态='+state]=false;  //如出现其他情况,则打印状态,并测试不通过
    break;
}
 
function test(){ //状态为200执行的函数
var city = data.city;
var income =data.income;
var score=(data.score);  //可使用request。url获取url,解析参数字段
var Insurance_ability=(data.Insurance_ability);
 
var result = JSON.parse(responseBody);
 if(result.得分==score&&result.保险能力==Insurance_ability){
        tests["测试通过"]=true;
    }else{
        tests["测试失败"+"(输入参数"+city+'、'+income+")预期结果(得分="+score+"、保险能力"+Insurance_ability+")(实际结果得分="+result.得分+"、保险能力="+result.保险能力+')']=false;
       
        }
}
 
//客户端问题
function clientQue(){
    tests['客户端问题(请求参数或方式错误)---测试失败---状态码为'+state+'   requestURl为'+request.url]=false;
}
 
//服务器或者网关问题
function serverQue(){
    tests['服务器或网关问题---测试失败---状态码为'+state+'   requestURl为'+request.url]=false;

}

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql(五)主从配置

目录 前言 一、MySQL Replication概述 二、MySQL复制类型 三、部署MySQL主从异步复制 总结 前言 为了实现MySQL的读写分离,可以使用MySQL官方提供的工具和技术,如MySQL Replication(复制)、MySQL Group Replication(组…

【读点论文】PP-YOLOE: An evolved version of YOLO,面向友好部署的模型设计,为项目后续产业落地提供了更加有效的参考

PP-YOLOE: An evolved version of YOLO Abstract 在本报告中,我们介绍了PP-YOLOE,一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化,采用无锚模式,更强大的骨干和颈部配备CSPRepResSt…

【C语言数据结构】模拟·顺序表·总项目实现

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

文件系统总结

《本文件系统默认linux文件系统》 一、文件系统基本概念 文件系统是操作系统中负责存取和管理信息的模块,它用统一的方式管理用户和系统信息的存储、检索、更新、共享和保护,并为用户提供一整套方便有效的文件使用和操作方法文件系统是操作系统中管理文…

【Quartus FPGA】EMIF DDR3 读写带宽测试

在通信原理中,通信系统的有效性用带宽来衡量,带宽定义为每秒传输的比特数,单位 b/s,或 bps。在 DDR3 接口的产品设计中,DDR3 读/写带宽是设计者必须考虑的指标。本文主要介绍了 Quartus FPGA 平台 EMIF 参数配置&#…

JAVA基础多线程-模拟线程死锁以及预防和避免死锁

引言 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 一,模拟死锁 示例代码: public class LockT1 {Object o …

最全面的msvcp110.dll丢失修复方法分享,快速修复msvcp110.dll文件

今天主要给大家详细的介绍一下msvcp110.dll丢失修复的方法,因为在网上看到很多人因为这个问题而烦恼,其实这个问题不难解决的,下面就给大家分享多种方法,一起来看看吧。 一. 修复msvcp110.dll丢失的方法 重新安装相关程序 首先&…

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

前言 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。 如…

从源码分析Handler面试问题

Handler 老生常谈的问题了,非常建议看一下Handler 的源码。刚入行的时候,大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

githack的安装步骤+一次错误体验

一.githack的安装步骤 1.要在Kali Linux上安装GitHack工具,您可以按照以下步骤操作: 打开终端并使用以下命令克隆GitHack存储库: git clone https://github.com/lijiejie/GitHack.git2.进入GitHack目录: cd GitHack3.安装依赖项…

『HarmonyOS』万物互联,分布式操作系统

👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟 🏡个人主页:starry陆离 🕒首发日期:2022年7月5日星期二 🌌上期文章:『首期文章』 📚订阅专栏&…

leetcode刷题(柠檬水找零、接雨水、宝石与石头、将数组和减半的最少操作次数、更新数组后处理求和查询、删除每行中的最大值、并行课程③)

目录 1、柠檬水找零 2、接雨水 3、宝石与石头 4、将数组和减半的最少操作次数 5、更新数组后处理求和查询 6、删除每行中的最大值 7、并行课程③ 1、柠檬水找零 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:dollars [0, 0] # 美元数组&am…

每日一题——有序链表去重

题目 删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次。 例如:给出的链表为1→1→2,返回1→2。 给出的链表为1→1→2→3→3,返回1→2→3。 数据范围:链表长度满足 0≤n≤100&#…

深度学习训练营之DCGAN网络学习

深度学习训练营之DCGAN网络学习 原文链接环境介绍DCGAN简单介绍生成器(Generator)判别器(Discriminator)对抗训练 前置工作导入第三方库导入数据数据查看 定义模型初始化权重定义生成器generator定义判别器 模型训练定义参数模型训…

7.28

1.思维导图 2.qt的sever #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器类 #include<QTcpSocket> //客户端类 #include<QMessageBox> //对话框类 #include<QList> …

计组 [指令系统] 预习题目

PPT第5章 第2部分预习题目 预习内容及相关问题 什么是R,I,J型指令&#xff0c;它们的特点&#xff1f; &#xff08;二&#xff09;R型指令的数据通路 &#xff08;指令功能与其对应的逻辑结构&#xff09; 功能&#xff1a;R[rd] ← R[rs] op R[rt]&#xff0c;如&#xff1a…

React的UmiJS搭建的项目集成海康威视h5player播放插件H5视频播放器开发包 V2.1.2

最近前端的一个项目&#xff0c;大屏需要摄像头播放&#xff0c;摄像头厂家是海康威视的&#xff0c;网上找了一圈都没有React集成的&#xff0c;特别是没有使用UmiJS搭脚手架搭建的&#xff0c;所以记录一下。 海康威视的开放平台的API地址&#xff0c;相关插件和文档都可以下…

行列转换.

表abc&#xff1a; &#xff08;建表语句在文章末尾&#xff09; 想要得到&#xff1a; 方法一 with a as(select 年,产 from abc where 季1), b as(select 年,产 from abc where 季2), c as(select 年,产 from abc where 季3), d as(select 年,产 from abc where 季4) selec…

图像识别概述

图像识别的过程 图像识别技术的过程分以下几步&#xff1a; 1. 信息的获取&#xff1a; 是指通过传感器&#xff0c;将光或声音等信息转化为电信息。也就是获取研究对象的基本信息并通过某种方法将其转变为机器能够认识的信息。 2. 预处理&#xff1a; 主要是指图像处理中的…

行业追踪,2023-07-28

自动复盘 2023-07-28 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…