postman在软件测试中的应用

postman工具概述

Postman 是一款功能强大的 API 开发和测试工具,在软件开发和测试领域应用广泛。开发阶段,可以通过工具进行mock数据测试,方便开发,联调;测试阶段,可以通过不同环境,不同数据进行接口测试和数据构造;回归阶段,可以通过场景自动化的方式进行接口串联测试,通过定时任务的方式生成测试报告等。

postman如何进行场景化接口自动化

postman数据处理

经常我们在接口测试过程中遇到以下问题:

测试/生产只是域名不同、token不一样,每次都需要写两个接口?或者说是改url,如果接口较多的情况下,如何快速处理呢?---如何做到一套接口多环境使用

postman可不可以连接数据库-进行一些获参和断言呢?

接口传参的时候,不同情况下,我要写多个case,就是多条用例,我能不能在一个接口里,通过条件判断,什么情况传什么参数呢?

我一个接口返回多组数据,我需要怎么遍历获取他们呢,再对他们进行处理呢?

接口传参中,有些值我想自定义随机生成或者按照一定规律生成,如何去生成呢?

我需要大量不同的数据时,或者说我需要批量修改/创建一些数据,如何去生成呢?

那么针对以上这些问题,postman工具应该怎么处理呢?

引入变量

postman变量类型

本地变量(Local Variable)

本地变量主要是针对单个url请求设置的变量,作用域只是局限在请求范围内。

javascript 复制代码
//设置本地变量
pm.variables.set("key","value");

正常接口参数:

引用变量设置:

全局变量(Global Variable)

全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。

javascript 复制代码
//设置全局变量
pm.globals.set("key","value")
注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量

设置方式:

环境变量(Environment Variable)

环境变量指在不同环境,同一个变量值随着环境不同而变化。

javascript 复制代码
//变量的引用格式为
{{varname}}

一个Java Script执行环境,可以通过JS脚本来编写Pre-request Script和Test Script。

Pre-request Script(预置脚本):可以用来修改一些默认参数,在请求发送之前执行;

Test Script(测试脚本):当接收到响应之后,再执行测试脚本

数据变量(Data Variable)

数据变量是通过导入外部数据文件(json文件或者csv文件),来获取变量数据。

数据处理方式

获取对应所需参数方法

接口返回值---获取所需参数

数据库查询---获取所需参数(xmysql)

Mock数据---构造所需参数

获取返回值信息

javascript 复制代码
//获取返回的响应值然后转为json格式
      var jsonData=pm.response.json();
//获取接口返回的值
 tg_order_id=jsonData["data"][0]["order_id"]
 或bpid=json.data.bpid
//控制台日志查看
      console.log(tg_order_id);
//将获取的变量设置全局变量  
 pm.globals.set("tg_order_id",tg_order_id);

postman连接数据库

javascript 复制代码
1、安装nodejs
2、安裝xmysql
3、连接数据库( xmysql -h test-XXX-af01.db.58dns.org -o 53200 -u 用户名 -p 密码 -d 数据库名)
(-h 输入连接数据库地址;-u -p 是要连接的数据库用户名密码;-d 是要连接的数据库中库名 )
4、获取数据库相关信息
在postman中通过 http://localhost:XXXX/api/ 访问 xmysql 自动生成的 Rest API

postman获取数据库信息常用操作语句

官方详细文档:https://github.com/o1lab/xmysql#api-overview

1、请求方式:
2、基本的数据库操作:
3、排序操作:
使用案例:

js脚本编写

经常我们为了方便多个接口串联使用,会需要对postman接口返回的结果进行处理,然后方便接口数据进行串联,这里就离不开js脚本编写

js基本用法

javascript 复制代码
1、js调试
console.log() 
console.warn()
console.info()
2、js数据类型
6种数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、为空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)
查看数据类型(typeof)
使用 typeof 操作符来检测变量的数据类型。
注:如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。
3、js类型转换
var obj = JSON.parse(text);(JSON 字符串转换为 JavaScript 对象)
javaScript 变量可以转换为新变量或其他数据类型:
通过使用 JavaScript 函数
Number() 转换为数字, String() 转换为字符串, Boolean() 转换为布尔值,Date() 日期转换为字符串。
通过 JavaScript 自身自动转换
当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。
自动转换为字符串:输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法:
4、JavaScript JSON
JSON 格式化后为 JavaScript 对象(JSON 格式在语法上与创建 JavaScript 对象代码是相同的)
JSON 数据 - 一个名称对应一个值/JSON 对象  /JSON 数组
JSON 字符串转换为 JavaScript 对象
JavaScript 值转换为 JSON 字符串

使用案例:

js条件语句

在写代码时,总是需要为不同的决定来执行不同的动作。故可以在代码中使用条件语句来完成该任务

在 JavaScript 中,我们可使用以下条件语句:

if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码

if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

if...else if...else 语句- 使用该语句来选择多个代码块之一来执行

switch 语句 - 使用该语句来选择多个代码块之一来执行

案例使用:

js循环

Js循环语句

希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。

JavaScript 支持不同类型的循环:

for - 循环代码块一定的次数

for/in - 循环遍历对象的属性
希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。

JavaScript 支持不同类型的循环:

while - 当指定的条件为 true 时循环指定的代码块

do/while - 同样当指定的条件为 true 时循环指定的代码块
注意:忘记增加条件中所用变量的值,否则循环永远不会结束!

js函数和对象

js函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

JavaScript 函数语法:

函数就是包裹在花括号中的代码块,前面使用了关键词 function,当调用该函数时,会执行函数内的代码。

function functionname()

{

// 执行代码

}

调用带参数的函数

function myFunction(var1,var2){代码}

带有返回值的函数

function myFunction(){ var x=5; return x;}

JS对象

1、数字方法(Numbere对象)
2、String对象

3、日期对象(Date对象)

4、Math 对象

5、Array对象

postman断言&运行

javascript 复制代码
【1】校验接口响应的状态码
【2】检查从JSON响应中获取到某个字段,判断其是否与预期字段一致; 
【3】判断实际响应时间是否与低于预期时间
【4】检查响应信息中是否包含某些指定的字符串(pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); )
【5】检查实际获取的响应体(即 Body 信息)与预期结果的响应体是否一致;(pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }); )
【6】检查响应中的头域信息(Headers)是否与预期一致(pm.test("Content-Type is present 
", function () {pm.response.to.have.header("Content-Type"); }); )
【7】检查响应码是否与预期集合中的某个值一致(pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); }); )
【8】检查响应信息中是否包含某个预期值(pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); }); )
【9】转化XML格式的响应成JSON对象  var jsonObject = xml2Json(responseBody); 

运行collection

数据data驱动测试

构建工作流

javascript 复制代码
在使用Coolection Runner 时,集合中的请求执行顺序就是请求在Collection中的排列顺序。
如果需要执行依次执行1-5-2-3-4的请求则有2种方式:
1、需要手动调整顺序;
2、在Tests里指定下一个请求    postman.setNextRequest("requestname")

命令执行

newman测试报告


jenkins集成运行

总结

1、在自动化方面-postman -只能用于小规模,项目之间的自动化-不是很体系化,本地化偏重

2、生成测试报告-也不是很美观

3、针对测试多库时不友好-只能连接一个数据库--适用于数据库单一的需求测试

相关推荐
影sir41 分钟前
Selenium常用函数(等待)
selenium·测试工具
影sir44 分钟前
Selenium常用函数(浏览器导航,文件上传,浏览器参数设置)
selenium·测试工具
德思特1 天前
通过 Wireshark 抓取串口命令
网络协议·测试工具·wireshark
影sir1 天前
Selenium常用函数(窗口与弹窗)
selenium·测试工具
Luminbox紫创测控2 天前
基于环境舱的新能源汽车三高试验方法与热响应评估
大数据·人工智能·测试工具·汽车·安全性测试·测试标准
菠萝猫yena2 天前
【读书笔记】《测试架构师修炼之道》读书笔记
功能测试·测试工具·单元测试
PhotonixBay2 天前
金属增材制造表面测量:共聚焦显微镜参数优化实践
人工智能·测试工具·制造
LT10157974442 天前
2026年 AI+RPA平台选型指南:智能自动化高效落地
测试工具
写出高质量的博客3 天前
Selenium常用方法
selenium·测试工具