【Postman接口测试】第三节.第二节.Postman界面功能介绍(下)

news2024/11/16 6:34:50

文章目录

  • 前言
  • 四、Postman 基础功能介绍
  •       4.4 批量执行接口请求
  •       4.5 日志调试
  •       4.6 Postman 断言 
  •       4.7 Postman 变量(全局/集合/环境)
  •            4.7.1 定义变量
  •            4.7.2 获取变量
  •       4.8 请求前置脚本
  •       4.9 接口自动关联
  • 总结


前言


四、Postman 基础功能介绍

4.4 批量执行接口请求

当在一个 Collection 中编写了很多个接口测试用例,想一起执行这批用例,在Postman 中如何操作呢?

具体步骤实现

  • 步骤1:选中一个 Collection,点击右三角,在弹出的界面点击 RUN 按钮。
  • 步骤2:这时,会出现一个叫 Collection Runner 的界面,默认会把 Collection 中的所有用例选中。
  • 步骤3:点击界面下方的 RUN bbs,就会对 Collection 中选中的所有测试用例进行运行。

  • 断言统计:左上角的两个 0 是统计当前 Collection 中断言成功的执行数和失败的执行数,如果没有编写断言,默认都为 0。
  • Run Summary运行结果总览,点击它,可以看到每个请求中,具体的测试断言的详细信息。
  • Export Result导出运行结果,默认导出的结果文件格式为 JSON 格式。
  • Retry: 重新运行,点击它会把该 Collection 重新运行一遍。
  • New:返回到 Runner,可以重新选择用例的组合。

4.5 日志调试

作用:

在做接口测试时,经常会因为代码写的有问题导致报错,这时,查看日志就显得非常重要

Postman 也提供了这样的功能,它允许我们在脚本中编写打印语句,用以查看打印的结果。同时,也可以查看每个请求的日志信息


在 Postman 中有两个入口:

  • 第一个入口就是:View -> Show Postman Console。
  • 第二个入口就是左下角第三个图标。

在 Postman 中,编写日志打印语句使用的是 JavaScript,编写位置可以是Pre-request Script或 Tests 标签。

编写打印语句举例:console.log(“hello,postman”)

var body=responseBody;
var title=body.match(new RegExp('"username":"(.*?)"}'))
// 打印标题
console.log(title)

图示说明:


4.6 Postman 断言

Postman 断言的一些特点,具体如下:

  • 断言编写位置:Tests 标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行
  • 断言执行结果查看:Test Results


上面曾介绍到,编写断言代码用到的编程语言是 JavaScript,那如果不会写怎么办?

不用担心,因为 Postman 已经给大家内置了一些常用的断言。

用的时候,只需从右侧点击其中某个断言,该断言对应的断言代码块,就会在文本框中自动生成。

图示说明:


常规六种断言

  • Status code:Code is 200 检查返回的状态码是否为200
  • Response body:Contains string 检查响应中包括指定字符串
  • Response body:Json value check 检查响应中其中json的值
  • Response body:is equal to a string 检查响应等于一个字符串
  • Response headers:Content-Type...检查是否包含响应头Content-Type
  • Response time is less than 200ms:检查请求耗时小于200ms

常用断言,按照响应的组成来划分,此处分别是:状态行、响应头、响应体、响应时间。

(1)状态行中的断言:

  • 断言状态码:Status code: code is 200
  • pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
    });
    


(2)响应头中的断言:

  • 断言响应头中包含:Response headers:Content-Type header check
  • pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
    });
    

(3)断言响应体(重点):

  • 断言响应体中包含 XXX 字符串:Response body:Contains string
  • 断言响应体等于 XXX 字符串:Response body : is equal to a string
  • pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
    });

    //注解
    pm.response.to.have.body("response_body_string"); 获取响应体等于response_body_string

  • 断言响应体(JSON)中某个键名对应的值:Response body : JSON value check
  • pm.test("Your test name", function () {
    var JSONData = pm.response.json();
    pm.expect(JSONData.value).to.eql(100);
    });
    //注解
    var JSONData = pm.response.json() 获取响应体,以 JSON 显示,赋值给JSONData.注意:该响应体必须返会是的 JSON,否则会报错
    pm.expect(JSONData.value).to.eql(100) 获取 JSONData 中的value为响应体中的key,然后和 100 进行比较
    或者响应体中带列表
    pm.expect(JSONData.value[0].value-key).to.eql(100) 
    
    

(4)响应时间:

  • 断言响应时间:Response time is less than 200ms、
  • pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200); //断言响应时间<200ms
    });
    

4.7 Postman 变量(全局/集合/环境)

在 Postman 常用的三种变量分别是全局变量,环境变量,集合变量。

  • 全局变量一旦申明了全局变量,全局有效,也就是说 Postman 中的任何集合,任何请求中都可以使用这个变量。它的作用域是最大的。
  • 环境变量:要申明环境变量,首先得创建环境,然后在环境中才能创建变量
  • 集合变量:集合变量是针对集合的,也就是说申明的变量必须基于某个集合,它的使用范围也只是针对这个集合有效。
  • 它们的作用域范围从大到小依次排列为:全局变量>集合变量>环境变量

4.7.1 定义变量

(1)定义全局和局部变量

已经定义的全局变量和环境变量,可以点击小眼睛进行快速查看


4.7.2 获取变量

定义好变量,接下来就可以使用变量了。

需要注意的是,在不同的位置获取变量,编写的规则也是不一样的

(1)如果在请求参数中获取变量

无论是获取全局、环境、集合变量,获取的方式都是一样的编写规则{{变量名}}
请求参数指的是URL,Params,Authorization,Headers,Body


(2)如果在编写代码的位置(Tests,Pre-requests Script)获取不同类型的变量

则编写的代码各不相同,具体如下:
1、获取环境变量:pm.environment.get(‘变量名’)
2、获取全局变量:pm.globals.get(‘变量名’)
3、获取集合变量:pm.pm.collectionVariables.get.get(‘变量名’)

图示说明:


4.8 请求前置脚本

一个请求在发送之前,会先去执行 Pre Request Script(前置脚本)中的代码。那么这个功能在实际工作中有什么作用呢?

主要场景:

一般情况下,在发送请求前需要对接口的数据做进一步处理,则都可以使用这个功能。

比如说

登录接口的密码,在发送前需要做加密处理,那么就可以在前置脚本中做加密处理;

再比如说

注册接口的邮箱输入参数会用到随机字符串,每请求一次接口该参数值都要求发生变化,这时,就可以在前置脚本中编写生成随机字符串的代码。

总体来说,凡在请求接口之前,需要对请求数据作进一步加工处理的,都可以使用前置脚本这个功能。


下面以业务接口举例:

某个接口需要传入当前发起请求时间的时间戳.

(1)首先编写前置脚本:

// 获取当前时间戳
var timestamp = (new Date()).valueOf();
// 设置为当前运行环境的环境变量,引用名称为timestamp
pm.environment.set("timestamp", timestamp);

(2)然后引用变量发起请求就OK

(3)请求完成之后,我们可以看到,当前环境下,变量已经存在

注意的是,我们这里前置脚本在发送请求之前其实是做了两件事情,

  • 首先获取当前时间戳,
  • 然后设置为环境变量

最后发起请求时,引用的变量已经存在于环境里面了,所以顺利发起请求。


4.9 接口自动关联

通常在测试的接口中,经常出现这种情况:

上一个接口的返回数据,是下一个接口的输入参数,那么这两个接口之间就产生了关联。为了避免每次都复制粘贴,所以通过自动关联方式关联两个接口。

这种关联在做接口测试时,非常常见,所以在Postman 中,如何实现这种关联关系呢?

关联步骤:

  • 提取上一个接口的返回数据值
  • 将这个数据值保存到环境变量或全局变量
  • 在下一个接口获取环境变量或全局变量

图示说明:

举例说明:

把获取验证码接口和登录成功接口进行自动关联。


实现思路:

(1)提取关联数据

验证码接口响应体提取uuid
var jsonData = pm.response.json();

(2)保存关联数据

设置环境变量保存uuid
pm.environment.set("uuid",jsonData.uuid);

(3)引用关联数据

登录接口引用uuid
请求参数中引用:{{uuid}}


(1)获取验证码图示说明:

(2)登录成功图示说明:


总结

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

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

相关文章

MyBatisPlus的简单入门

文章目录 1.MybatisPlus的简介2.创建SpringBoot工程3.编写测试类 1.MybatisPlus的简介 MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在&#xff1a;简化开发、提高效率。 它对应的官方网址&#xff1a;链接 2.创建Sprin…

window自动启动bat文件

开机自动开启远程桌面&#xff0c; WinR 执行netplwiz 命令进入设置&#xff1b;取消勾选&#xff0c;可选择所需用户&#xff0c;点击应用&#xff0c;输入远程的密码即可 开机自动开启远程桌面&#xff0c; WinR 执行netplwiz 命令进入设置&#xff1b;取消勾选&#xff0…

AppScan/哥斯拉的字体大小显示异常

搜索关键字&#xff1a;缩放、分辨率、高DPI 问题现象 其他软件的菜单字体显示异常&#xff0c;解决版办法也一样 哥斯拉 godzilla没有URL 解决办法 第一步&#xff1a; 在桌面软件快捷方式的图标上按鼠标右键&#xff0c;在弹出的对话框中选择【属性】&#xff0c;进入到属…

synchronized 锁的到底是什么?

通过8种情况演示锁运行案例&#xff0c;看看我们到底锁的是什么 1锁相关的8种案例演示code package com.bilibili.juc.lock;import java.util.concurrent.TimeUnit;/*** 题目&#xff1a;谈谈你对多线程锁的理解&#xff0c;8锁案例说明* 口诀&#xff1a;线程 操作 资源类* 8…

产教协同|暴雨AI算力赋能传媒实践教学

近日&#xff0c;“第七届传媒实践教学创新研讨会暨中国高校影视学会实验教学专业委员会年会”在美丽的山城重庆成功举办。本次大会以“拥抱AI&#xff0c;融合共生”为主题&#xff0c;吸引了来自全国200多所高校、30多家企业以及700多位大视听实践教学产学研用各界专家、学者…

【Kotlin】简单介绍与使用kotlin

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Kotlin ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 特点 变量和常量 数据类型和类型推断 函数 字符串模板 条件表达式 空安全 when 表达式 循环 我的其他博客 前言 Kotlin是…

I2C协议详解

文章目录 概念工作模式 原理工作原理工作流程IIC协议的关键特点IIC通信过程 优点与缺点优点缺点 概念 IIC&#xff08;Inter-Integrated Circuit&#xff09;协议&#xff0c;也常被称为TWI&#xff08;Two-Wire Interface&#xff09;协议&#xff0c;是一种用于短距离通信的…

FreeRTOS【8】二值信号量使用

1.开发背景 FreeRTOS 提供了队列可以在线程间快速交换信息&#xff0c;那么还有没有其他交互渠道&#xff1f;答案是有的&#xff0c;相对于队列传递信息&#xff0c;还有更轻量级的线程唤醒操作&#xff0c;那就是信号量&#xff0c;而二值信号量就是最简单的一种。 二值信号量…

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域&#xff0c;视频图像信息的应用日益广泛&#xff0c;尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理&#xff0c;GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的&#xff0c;但它们在实际…

数字人如何赋能农产业智慧化发展?

在第八届中国荔枝龙眼产业大会上&#xff0c;推出了AI数字人宣传大使“荔枝妹”&#xff0c;数字人“荔枝妹”不仅可以在现场犹如真人般与观众、嘉宾实时互动交流&#xff0c;又可以作为AI交互数字人&#xff0c;具有情感交互、语音互动等能力&#xff0c;用户可以通过与AI交互…

【蓝桥杯嵌入式】第十四届省赛 更新中

0 前言 刚刚做完第十四届的省赛&#xff0c;这届题目比我想象中的要简单&#xff1b;不过我去年参加的14届单片机的省赛都比往年的国赛还难&#xff0c;挺离谱的~ 1 展示 1.1 源码 1.2 演示视频 1.3 题目展示 2 CubeMX配置(第十四届省赛真题) 设置下载线 HSE时钟设置 时钟树…

Linux新增磁盘挂载分区

1. 查看磁盘分区名称 lsblk 可见&#xff0c;新增的分区为 sdb 2.格式化磁盘 mkfs.xfs -f /dev/sdb 3.挂在磁盘到 /ocean目录&#xff0c;挂在前先创建空目录 /ocean mkdir /oceanmount /dev/sdb /ocean 执行后&#xff0c;可用 df -h 查看分区是否成功 4.持久化磁盘分区&a…

Linux DHCP server 配置

参考&#xff1a;linux dhcp配置多vlan ip_linux 接口vlan-CSDN博客 配置静态IP地址&#xff1a; 给固定的MAC地址分配指定的IP地址&#xff0c;固定的IP地址不必包含在指定的IP池中&#xff0c;如果包含在IP地址池中&#xff0c;固定的IP地址会从IP地址池中移除 配置方法&…

高级软件工程师带你解决MySQL死锁问题Deadlock found when trying to get lock实战案例全网唯一

高级软件工程师带你解决MySQL死锁问题Deadlock found when trying to get lock实战 前言 笔者我实际工作中&#xff0c;经常遇到mysql数据库死锁问题&#xff01;CSDN上面也有很多大神刨析解决方法&#xff01; 我在实际工作中的MySQL数据库架构很复杂&#xff0c;又涉及到主…

【深度学习实战—9】:基于MediaPipe的坐姿检测

✨博客主页&#xff1a;王乐予&#x1f388; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 &#x1f63a;一、Med…

链动3+1模式:深度解析与优势探讨

在数字化营销领域&#xff0c;链动模式因其强大的裂变能力和高效的引流机制而备受瞩目。其中&#xff0c;链动21模式一度是商家们的首选&#xff0c;但随着时间的推移&#xff0c;其存在的问题也逐渐显现&#xff1a;预留小号和较低的复购率成为制约其进一步发展的瓶颈。为了解…

速看!!24上软考【电子商务设计师】真题回顾,含答案解析

2024上半年软考考试已经结束了&#xff0c;为大家整理了网友回忆版的电子商务设计师真题及答案&#xff0c;25-26日两批考试总共60道题。 上半年考试的宝子们可以对答案预估分数&#xff01;准备下半年考的宝子可以提前把握考试知识点和出题方向&#xff0c;说不定会遇到相同考…

基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)

准确识别心电信号的R波是进行HRV分析的前提。因此&#xff0c;开发出准确的心电信号R波检测方法十分重要。近几十年来&#xff0c;提出的R峰检测方法主要分为两个阶段。第1阶段是预处理阶段&#xff0c;目的是对受不同噪声影响的原始心电信号进行降噪处理&#xff0c;从而实现增…

定点化和模型量化(三)

量化解决的是训练使用的浮点和运行使用的硬件只支持定点的矛盾。这里介绍一些实际量化中使用到的工具。 SNPE简介 The Snapdragon Neural Processing Engine (SNPE)是高通骁龙为了加速网络模型设计的框架。但它不只支持高通&#xff0c;SNPE还支持多种硬件平台&#xff0c;AR…

神经网络不确定性综述(Part III)——Uncertainty estimation_Bayesian neural networks

相关链接&#xff1a; 神经网络不确定性综述(Part I)——A survey of uncertainty in deep neural networks-CSDN博客 神经网络不确定性综述(Part II)——Uncertainty estimation_Single deterministic methods-CSDN博客 神经网络不确定性综述(Part III)——Uncertainty est…