PostMan接口测试实用小点

postman · 浏览次数 : 0

小编点评

## PostMan 接口测试实用小点总结 **环境变量作为接口测试变量的设置:** * 在 Postman 中设置环境变量,例如 `appsecurity` 和 `appkey`。 * 在 UI 中使用 `{{变量名}}`语法访问环境变量的值。 * 在脚本中获取环境变量值并进行拼接或其他操作。 **常用接口测试场景:** 1. **获取 Ticket 再获取业务数据:**利用环境变量存储 Ticket 数据,并在获取到 Ticket 后解析响应数据并存回环境变量。 2. **业务接口请求正文动态添加签名:**使用环境变量存储签名参数,并在 Pre-request Script 中设置签名正文。 3. **通过数据驱动接口调用:**批量运行接口并从数据文件中获取数据。 **其他小技巧:** * 使用 `pm.collectionVariables.set()` 设置变量,方便批量处理。 * 使用 `pm.iterationData` 获取多个接口数据并将其一起处理。 * 使用 `CryptoJS` 库进行安全哈希。 * 在数据控制方面,可以使用后置和前置脚本进行个性化配置。 * 可以根据需要修改接口的请求正文,以满足不同的测试需求。

正文

PostMan接口测试实用小点

1. 接口测试变量存取操作

在Postman中有很多地方可以存储一些变量,这里只介绍经常使用的环境变量.变量设置后,在UI界面可以通过{{变量名}}获取到对应值.

在环境变量中配置变量url = https://ct.ctrip.com
在请求地址栏配置 {{url}}/SwitchAPI/Order/Ticket/
最终发起地址为https://ct.ctrip.com/SwitchAPI/Order/Ticket/

在环境变量中配置变量

appkey=test_地心侠士_key 
appsecurity=test_地心侠士_sec

请求正文(Body-> raw)配置如下JSON

{
    "appSecurity":"{{appsecurity}}",
    "appKey":"{{appkey}}"
}

最终发起时,请求正文会替换成如下内容

{
    "appSecurity":"test_地心侠士_key",
    "appKey":"test_地心侠士_sec"
}

所以,我们可以通过改变环境变量值,来修改请求相关的内容,下边一段代码是获取当前环境变量值,并拼接一个字母A,在重新放回环境变量中

// ahutor 地心侠士
 var env_appkey =  pm.variables.get("appsecurity");
 env_appkey = env_appkey +"A";
 pm.environment.set("appsecurity", env_appkey);

2 常用接口测试

2.1 先获取Ticket再获取业务数据

这种情况,就是利用环境变量做中转,在获取到Ticket以后,解析响应数据,并把最新的token存回环境变量中.

A. Ticket请求正文配置

{
    "appSecurity":"{{appsecurity}}",
    "appKey":"{{appkey}}"
}

A. Ticket请求响应信息

{
    "Status": {
        "Success": true,
        "ErrorCode": 0,
        "Message": "调用成功。"
    },
    "Ticket": "6629ebc42653b0e43449b962"
}

A. PostMan Tests脚本区域直接编写js脚本,存储Ticket响应信息

// ahutor 地心侠士
var jsonData = pm.response.json();
pm.environment.set("Ticket", jsonData.Ticket);

B. 业务接口请求正文配置,这里会使用上一个接口的Ticket

{
    "Auth": {
        "AppKey": "{{appkey}}",
        "Ticket": "{{Ticket}}"
    },
    "OrderID": "31015905161",
    "JourneyNo":"",
    "SearchType": "1"
}

2.2 业务请求动态添加签名

很多接口为了防止,请求数据被篡改,都要求在请求参数中添加签名参数.这些签名值都有一定算法处理.这个时候也可用通过环境变量,结合Pre-request Script实现

需要添加签名正文配置

{
    "approveScenario": "",
    "corpId": "地心侠士",
    "orderId": "312056399256",
    "orderStatus": "Paid",
    "productType": "HotelMember",
    "sign": "{{sign}}"
}

请求发起前脚本,修改环境变量值

// ahutor 地心侠士 获取请求正文值,注意这里是原始值
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=reqData.orderId
let orderStatus=reqData.orderStatus
let productType =reqData.productType
// 一个有意思小游戏,地心侠士,欢迎微信搜索试玩
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 =  CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
// 这里使用了集合变量和环境变量一样
pm.collectionVariables.set("sign", SHA1.toUpperCase());

2.3 通过Runer实现接口批量调用

某些情况下,要批量跑一些数据,也可使用postman处理,讲数据文件这里成csv文件,然后直接再Runner中上传,然后从接口集合中拉去一个集合过来,选取一个接口,就可以实现通过数据驱动接口调用.

数据文件

序号 订单号 订单状态
1 31295399256 Paid
2 31295399257 Paid
3 31295399258 Dealt

请求正文
注意{{订单号}} 和 {{订单状态}} 和数据文件列头一一对应

{
    "approveScenario": "",
    "corpId": "地心侠士",
    "orderId": "{{订单号}}",
    "orderStatus": "{{订单状态}}",
    "productType": "HotelMember",
    "refundType": null,
    "sign": "{{sign}}",
    "statusIDs": null
}

请求前置脚本(Pre-request Script),通过pm.iterationData获取数据行数据

// ahutor 地心侠士
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=pm.iterationData.get("订单号")
let orderStatus=pm.iterationData.get("订单状态")
let productType =reqData.productType
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 =  CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
pm.collectionVariables.set("sign", SHA1.toUpperCase());

3 总结

PostMan这个接口测试工具,提供常规的接口测试,还提供接口mock,支持代理抓包,功能还是蛮多的.在数据控制方面,提供后置和前置脚本,可编程性也强.接口可以直接转换成不同语言的代码,这个也很实用. 平时记录一些开发过程的小知识点,欢迎关注我的公众号[小院不小],也欢迎添加QQ:464884492直接交流
公众号
闲暇之余,做了一款有趣耐玩的消除类微信小游戏地心侠士,有兴趣可到微信搜索地心侠士玩玩,感谢支持

与PostMan接口测试实用小点相似的内容:

PostMan接口测试实用小点

PostMan接口测试实用小点 1. 接口测试变量存取操作 在Postman中有很多地方可以存储一些变量,这里只介绍经常使用的环境变量.变量设置后,在UI界面可以通过{{变量名}}获取到对应值. 在环境变量中配置变量url = https://ct.ctrip.com 在请求地址栏配置 {{url}

接口测试基础

定义 基于不同的输入参数,校验接口响应数据与预期数据是否一致。后端开发完成后可以先进行接口测试,提前介入测试,尽早发现问题。 接口测试学习内容 1.接口测试用例设计 2.工具实现接口测试,主要就是利用postman或者其他工具测试 3.代码实现接口测试,也就是接口自动化测试 URL 1.URL:是互

openAI发布v0.2.0了

时隔20天,OpenAI从v0.0.1升级到了v0.2.0。与v0.0.1版相比,v0.2.0版主要做了以下改动: 把cmd目录下微信公众号的相关服务迁移到了这里 完善了cmd下的测试服务,针对openAI库里实现的各个接口都提供了响应的调用接口,服务运行后可以通过postman进行测试 完成了Fi

Apifox:成熟的测试工具要学会自己写接口文档

好家伙, 在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接口的测试完成后,它可以一键生成接口文档 下载地址(免费哟): Apifox -

基于.NetCore开发博客项目 StarBlog - (26) 集成Swagger接口文档

## 前言 这是StarBlog系列在2023年的第一篇更新😃~ 在之前的文章里,我们已经完成了部分接口的开发,接下来需要使用 curl、Postman 这类工具对这些接口进行测试,但接口一多,每次测试都要一个个填入地址和对应参数会比较麻烦… 我们需要一种直观的方式来汇总项目里的所有接口,并且如果

postman导入请求到jmeter进行简单压测,开发同学一学就会

背景 这个事情也是最近做的,因为线上nginx被我换成了openresty,然后接入层服务也做了较大改动,虽然我们这个app(内部办公类)并发不算高,但好歹还是压测一下,上线时心里也稳一点。 于是用jmeter简单压测下看看,这里记录一下。 这次也就找了几个接口来压:登录接口、登录后获取用户信息接口

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(9)-Charles如何修改请求参数和响应数据-上篇

1.简介 宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作。但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼的去求人。通过今天的学习后,再也不担心这些烦心事。我们可以通过工具Charles就可以实现。可以用以下三种方法修

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(10)-Charles如何修改请求参数和响应数据-下篇

1.简介 宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作。但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼的去求人。通过今天的学习后,再也不担心这些烦心事。我们可以通过工具Charles就可以实现。可以用以下三种方法修

在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务

目录构建服务层接口路由层PostMan 调用 采用 Fast API 搭建服务接口: https://www.cnblogs.com/vipsoft/p/17684079.html Fast API 文档:https://fastapi.tiangolo.com/zh/ 构建服务层 qa_servi

Postman 的 Basic Auth 如何通过 Feign 实现

Postman 的 Basic Auth: 分析 根据以上图片分析: Postman 的 Authorization 实际为: header 中添加 Authorization: ******* ******* => "Base" + " " + base64("Username"+":"+"Pas