Postman做接口测试时一些实用的操作

Postman 之前是作为Chrome 的一个插件,现在要下载应用才能使用。

以下是postman 的界面:

各个功能区的使用如下:

  • 快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据,导入别人共享的收藏夹测试数据(Import from file, Import from folder, Import from link等),或新建请求、收藏夹、环境变量等。
  • 侧边栏: 包括搜索栏, Request 请求的历史记录和收藏夹管理。
  • 功能区: Request 请求设置,查看 Response 响应结果和测试结果,可以将请求保存到收藏夹。
  • 设置区:设置和管理环境变量和全局变量

一、环境变量和全局变量的设置:

a. 环境变量的设置方法如下图。点击设置一个环境变量,名为"user_pwd", 里面设置username 和passwd的值,然后在请求中应用这个环境变量"user_pwd"即可。

环境变量可以使用在以下地方

  • URL
  • URL params
  • Header values
  • form-data/url-encoded values
  • Raw body content
  • Helper fields

注意:在你要使用的变量名上附上双花括号,一个请求只能应用一个环境变量。

下图"username" 和"passwd" 的value值应用了环境变量"user_pwd",所以在body 中,只需在key对应的value那写上变量{{username}}, {{passwd}}

注意:一个项目需要测试好几个环境的情况,就可以对不同的环境设置一个环境变量,比如对“test environment”设置一个环境变量,对“stage environment”设置一个环境变量,对“production 环境”设置一个环境变量。

 b. 全局变量的设置方法类似,如下图,点击"Globals" 后就会出现添加环境变量类似的页面,进行变量和值的设置。

注意:全局变量设置就应用于整个收藏夹(Collection)中的请求,不用像环境变量一样需要选取。

二、用Postman做接口测试的实例

**接口测试中常用的请求为GET 和POST,以下均以这两种请求为例。

  • GET 和POST 的区别:GET 使用URL 或Cookie 传参,而POST将数据放在Body 中。
  • GET的URL 在长度上会有限制,而POST没有。
  • POST比GET相对安全,因为在地址栏不可见。
  • 一般POST请求用来获取数据,POST请求用来发送数据。

**对于上面的区别,其实第一点POST也可以将数据放在URL里,GET请求其实也没有长度限制,POST请求看起来是隐式的,但是可以通过抓包拿到参数。

1. GET 请求:

平常我们拿一个url 访问页面,就是所谓的get 请求。

例1.(stu_info 接口:获取名字为xx 的信息)

将请求方式设为GET, 同时输入完整的url, 跟访问浏览器一样, 或者输入接口url, 点击"Params" 输入需要的key 以及value, 点击"Send", 即可在"Response" 中查看返回的结果。

注意: get 请求的内容不能放在body里,并且长度有限制。由于对domain 设置了全局变量,所以,url 中用变量{{domain}} 做了替换,以下的请求中都应用了这个全局变量。

例2. (all_stu 接口:获取所有用户的信息)

除了例1这种GET请求,还有些接口发送GET请求时除了发送key-value, 还要将Headers的信息也一起发送过去,这样就可以借助Postman来实现。以下图为例,需要在Headers 里添加"Referer"信息,以获取所有用户的信息。

2. POST请求:

POST 请求不能像GET一样直接在浏览器输入就可以请求,需要借助工具来完成。

使用方法:选择请求方式为post,输入请求的url,以及输入必要的"Authorization" , "header" 和"Body" 数据。post请求可以发送key-value, json格式,file等。

对于"Authorization"的使用,遇到比较多的是Type 为"Basic Auth", 然后设置对应的Username 和Password。

这里的username, password的值可以通过设置环境变量的方式取得。

a. 用Postman 发送key-value 的请求:

以login 接口为例,在Body 中选取"form-data" 格式,输入所需的key-value, 选取对应的环境变量。

b. 用Postman 发送json格式的请求:

以add user 接口为例,在Body 中选取"raw" 格式,根据接口文档输入json 数据, 有需要应用环境变量的选取环境变量。

c. 用Postman 发送文件的请求:

以file upload 接口为例,在Body 中选取"form-data" 格式,在key 里输入"file",在右边的下拉里选取类型为"File",点击"Choose Files" 就可以上传本地文件了。

三、Pre-requestScript 的使用

 对于环境变量和全局变量的使用,除了上面所讲的方法外,也可以用Pre-requestScript 方法。

以login接口为例,在"Pre-requestScript"中设置环境变量 "username", "passwd",在Body 中选取"form-data" 格式,输入所需的key-value, value即为变量{{username}}, {{passwd}}。

postman. setEnvironmentVariable (“key”, “value”);

postman. setGlobalVariable (“key”, “value”);

getEnvironmentVariable ("key");//获取key的环境变量

getGlobalVariable(“key”);//获取key的全局变量

四、Tests 的使用

1. Tests 作为测试用例的应用

Tests 主要用来设计用例,比如要测试返回结果是否含有某一字符串,就可以用到 Tests。以gold_add 接口为例,来编写测试用例,分别测试返回的结果是否含有,如下所示:

响应成功返回PASS, 失败返回FAIL。

 常用tests如下:

1.检查response body中是否包含某个string
tests["Body matches string"] = responseBody.has("string_you_want_to_search");

注意:"Body matches string" 需唯一。

2.检测JSON中的某个值是否等于预期的值

var data = JSON.parse(responseBody);

tests["Your test name"] = data.value === 100;

JSON.parse()方法,把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数。

如:检查json中某个数组元素的个数(这里检测programs的长度)

var data = JSON.parse(responseBody);

tests["program's lenght"] = data.programs.length === 5;

3.检查response body是否与某个string相等
4.转换XML body为JSON对象
var jsonObject = xml2Json(responseBody);

tests["Body is correct"] = responseBody === "response_body_string";

5.测试response Headers中的某个元素是否存在(如:Content-Type)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");

//getResponseHeader()方法会返回header的值,如果该值存在

或者:

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
上面的方法,不区分大小写。下面的方法,要区分大小写。

6.验证Status code的值

tests["Status code is 200"] = responseCode.code === 200;

7.验证Response time是否小于某个值
tests["Response time is less than 200ms"] = responseTime < 200;

8.name是否包含某个值
tests["Status code name has string"] = responseCode.name.has("Created");

9.POST 请求的状态响应码是否是某个值
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

10.很小的JSON数据验证器

var schema = {
"items": {
"type": "boolean"

}

};

var data1 = [true, false];

var data2 = [true, 123];

console.log(tv4.error);

tests["Valid Data1"] = tv4.validate(data1, schema);

tests["Valid Data2"] = tv4.validate(data2, schema);

2. 设置环境变量,建立多个接口间的关联

以gold_add 接口为例,由于该接口有权限验证,需要admin用户才可以做操作,需要添加cookie,所以需要将login 接口关联起来使用。

在login 请求中, 在"Tests"中加入

var jsonData =JSON.parse(responseBody);//获取body中返回的所有参数
postman.setEnvironmentVariable("sign",jsonData.login_info.sign);//把返回参数中的sign设置为环境变量

这样sign 就可以作为环境变量,应用于gold_add接口。

在gold_add 接口中,{{username}} 由于在环境变量"user_pwd" 中已经设置,可以直接输入变量名, {{sign}} 动态取得login接口中Response 的 "sign" 值,{{sign}}已在上面login 请求的"Tests" 中定义。

以上就是postman接口测试基本使用方法总结。 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 


http://www.ppmy.cn/ops/109824.html

相关文章

Ironic服务是什么;Ironic服务中用户镜像,租户怎么使用

目录 Ironic服务是什么 一、Ironic服务简介 二、Ironic服务的使用方法 1. 部署与配置 2. 注册与管理裸金属节点 3. 部署与监控 4. 插件与集成 三、使用场景 四、总结 Ironic服务中用户镜像,租户怎么使用 用户镜像的创建与准备 租户使用用户镜像 注意事项 Ironic服…

SpringCloud之Sleuth(Micrometer)+ZipKin分布式链路追踪

&#xff08;学习笔记&#xff09; 1、分布式链路追踪概述 问题&#xff1a;在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xf…

传输层协议UDP

本篇将主要介绍 UDP 协议&#xff0c;介绍了有关 UDP 协议的报头、协议特点、UDP 协议在操作系统中的缓冲区、UDP 协议使用的注意事项&#xff0c;以及有关 UDP 的 Socket 编程程序&#xff0c;同时重点介绍了操作系统对于 UDP 协议报文的管理。 接着介绍了有关端口号的映射。 …

powerbi

一. CALCULATE 和 FILTER FILTER 返回的数据必须是表&#xff0c; 所以 可以 用在 新建表中&#xff0c; 不能直接用在度量值中其实 filter 相当于 用 外表字段 去进行筛选 不使用 filter&#xff0c; 只能使用本表字段 进行筛选&#xff0c;如下1&#xff0c; 只能使用 门店信…

cookie实战案例-自动登录网站

在写爬虫的时候&#xff0c;要伪装成真实用户请求。可能需要大量的IP地址&#xff0c;那么大量的IP地址从哪里来呢&#xff1f;这里就需要用代理IP来解决了&#xff0c;有的网站专门通过提供代理IP池服务作为主要的经营业务&#xff0c;只要注册相关网站开通对应套餐就可以了。…

Linux中的进程概念

Linux中的进程概念是操作系统核心功能之一&#xff0c;它对于理解系统如何管理和运行程序至关重要。以下是对Linux进程概念的详细解析&#xff0c;涵盖进程的定义、特性、状态、创建与终止、内存管理、优先级与调度等多个方面。 一、进程的定义 进程是Linux系统中运行中的程序…

深入浅出:Android屏幕刷新机制

if (status) {//初始化出现异常 String8 message;led to initialize display event receiver. status message.appendFormat(“Fai%d”, status); jniThrowRuntimeException(env, message.string()); return 0; } receiver->incStrong(gDisplayEventReceiverClassInfo.clazz…

Docker 容器技术:简化 MySQL 主从复制部署与优化

Docker 容器技术&#xff1a;简化 MySQL 主从复制部署与优化 引言 随着大数据和云计算的快速发展&#xff0c;数据库的高可用性、可扩展性和易维护性成为了企业IT架构中的重要考量因素。MySQL 作为一款流行的开源数据库管理系统&#xff0c;其主从复制&#xff08;Master-Sla…

【Unity插件】Asset Store中关于输入的插件汇总

在Unity的Asset Store中&#xff0c;有许多高质量的插件可以帮助开发者更高效、灵活地处理输入系统&#xff0c;特别是针对多平台、多设备输入场景。以下是一些在输入处理方面备受欢迎的插件&#xff1a; 1. Rewired 简介&#xff1a;Rewired是Unity中最受欢迎的输入系统替代…

基于YOLOv10的垃圾检测系统

基于YOLOv10的垃圾检测系统 (价格90) 包含 [CardBoard, Glass, Metal, Paper, Plastic] 5个类 [纸板, 玻璃, 金属, 纸张, 塑料] 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的…

mysql性能优化-MySQL 复制与高可用

一、MySQL 复制的工作原理 MySQL 复制是指将一个 MySQL 实例&#xff08;主库&#xff0c;Master&#xff09;上的数据和操作同步到其他实例&#xff08;从库&#xff0c;Slave&#xff09;&#xff0c;从而实现数据的多副本存储和分布式处理。 1. 复制的三大步骤 MySQL 复制…

OpenHarmony鸿蒙( Beta5.0)RTSPServer实现播放视频详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…

搭建 WordPress 及常见问题与解决办法

浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 环境准备安装 LAMP 堆栈 (Linux, Apache, MySQL, PHP)配置 MySQL 数据库 安装 WordPress配置 WordPress常见问题及解决办法数据库连接错误白屏问题插件或主题冲突内存限制错误 本文旨在介绍如何在服务器上…

深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常 2.1 意义 对于C、C程序开发来说&#xff0c;程序员需要维护每一个对象从开始到终结。Java的虚拟自动内存管理机制&#xff0c;让java程序员不需要手写delete或者free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;但是如果…

C++——智能指针

目录 一、RAII 二、auto_ptr 三、unique_ptr 四、shared_ptr 一、RAII RAII&#xff1a;是一种利用对象生命周期来控制程序资源&#xff08;如内存、文件句柄、网络连接、互斥量等等&#xff09;的简单技术。 在对象构造时获取资源&#xff0c;接着控制对资源的访问使之在…

Python学习笔记--类型、运算符、循环

Python学习笔记 01-hello world """ 第一个 """ print("hello world") # 输出"hello world" print("welcome!") # 输出"welcome!" 02- 注释 # 单行注释# 多行注释多行注释03- 标识符 ""…

Oracle LiveLabs实验:Oracle Exadata 平台性能特性

此实验"Oracle Exadata Platform Performance Features"申请地址在这里。 本文所有的脚本位于这里。 此实验支持Exadata X7, X8, X8M, X9M&#xff0c;数据库版本支持19和21。我的实验环境为X9M&#xff0c;19c数据库。 实验 1&#xff1a;创建实验室环境 任务 1…

机器CPU突然升高的原因是什么?

机器CPU突然升高的原因可能有很多&#xff0c;下面列出了一些常见的原因和可能的解决方法&#xff1a; 1. 应用程序或进程消耗过多资源 某个应用程序或进程可能突然开始消耗大量的CPU资源。这可能是由于代码中的错误、内存泄漏或资源争用等问题。 解决方法&#xff1a; 使用…

el-table 单元格,双击编辑

el-table 单元格&#xff0c;双击编辑 实现效果 代码如下 <template><el-table :data"tableData" style"width: 100%"><el-table-column prop"name" label"姓名" width"180"><template slot-scope&q…

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统&#xff0c;永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bin touch check_sshd.sh #给可执行权限 chmod x /usr/local/bin/check_sshd.sh脚本内容如下&#xff1a; #!/…