postman

本文详细介绍了如何使用Postman进行接口测试,包括接口分类、测试流程、安装注册、执行测试、环境变量、全局变量、接口关联、断言、批量运行、数据驱动、请求头处理、Mock Server、Cookie和Token鉴权、Newman命令行工具以及Postman+Newman+Jenkins的持续集成实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.接口分类

外部接口--只需测试正例即可

内部接口--只提供给内部系统使用(预算系统、保单系统)---测试正例即可

内部即可---提供给外部系统使用---测试必须全面,正例、各种异常场景、权限登

2.接口测试流程

(1)拿到API文档(通过抓包工具获取),熟悉接口业务、接口地址、鉴定方式、入参、返回码

(2)编写测试用例

正例:输入正常入参,接口能够返回数据

反例:

鉴权反例:鉴权码为空、错误、过期...

参数反例:参数为空、参数类型异常、参数长度异常

错误码覆盖:根据业务而定

其他错误场景:接口黑名单、接口调用次数限制、分页场景。

(3)使用接口测试工具postman执行接口测试

(4)postman+newman+jekins实现持续集成,并且输出测试报告并且发送邮件。

3.postman 安装、注册

官网安装、注册登录

home 主页

workspaces 工作空间

	collections 集合,项目集合

	APIs     API文档

	Enviromennts  环境变量,全局变量

	Mock Server 虚拟服务器

	Monitors 监听器

	History    历史记录

4.postman执行接口测试

(1)请求页签:

Params get请求传参

authonzation 鉴权

headers 请求头

Body post请求传参

	form-data  传键值对参数或文件

	x-www-form-urlencoded  只能够传键值对参数

	raw    json、text、xml、html、JavaScript

	binary      把文件以二进制方式传参

pre-request 请求之前的脚本

tests 请求之后的断言

cookies 用于管理cookie信息

(2)响应页签

body 接口返回的数据

 pretty:以json、html、xml等不同的格式查看返回的数据

 raw:以文本方式查看返回的数据

 preview :以网页方式查看返回的数据

cookies:响应的cookie信息

headers:响应头

tests results:断言结果

200状态吗 ok状态信息 响应时间 响应字节数 保存响应

(3)get请求和post请求的区别(面试题)

get请求一般是获取数据,post一般是提交数据。

post请求比get请求安全。

本质区别,传参方式不一样:

	get请求在地址栏后面以?的方式传参,多个参数之间用&分隔。

	post请求是在body以表单的方式传参。

问题:开发环境、测试环境、生产环境

接口关联:需要手动关联

参数需要手动修改

解决:

5.postman的环境变量和全局变量

环境变量就是全局变量

全局变量是能够在任何接口里面访问的变量
在这里插入图片描述

获取环境变量的值是通过:{{变量名}}
在这里插入图片描述

6.接口关联的两种方式

(1)使用json提取器实现接口关联

第一个接口:

//console.log(responseBody);
//使用json提取器提取access_token值
//把返回的字符串格式的数据转换成对象的形式
var result = JSON.parse(responseBody);
//console.log(result.access_token);
//把access_token设置为全局变量
pm.globals.set("access_token", result.access_token);

第二个接口:{{access_token}}

在这里插入图片描述
在这里插入图片描述

(2)使用正则表达式提取器实现接口关联,match匹配

第一个接口:

console.log(responseBody);
var result = responseBody.match(new RegExp('"access_token":"(.*?)"')); 
//新建一个正则表达式RegExp左边界和右边界
console.log(result[1]);
//设置全局变量
pm.globals.set("access_token", "result[1]");

第二个接口:{{access_token}}

在这里插入图片描述

7.postman内置动态参数及自定义的动态参数

postman内置动态参数:可能没办法做断言

{{$timesstamp}}生成当前时间的时间戳
{{$randomInt}}生成0-1000之间的随机数
{{$guid}}      生成速记GUID字符串

自定义动态参数:

//手动获得时间戳
var times =Date.now();
//设置为全局变量
pm.globals.set("times",times);

使用时使用:{{times}}
在这里插入图片描述
在这里插入图片描述

8.增删改查业务闭环:

创建标签-查询标签-修改标签-删除标签-查询标签

//获得创建的标签ID
var tag_id = responseBody.match(new RegExp('"name":(.*?),'));
console.log(tag_id);

9.postman断言

Tests 里断言

常规6钟断言:

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 times is less than 200ms:检查请求耗时小于200ms。

在这里插入图片描述

在断言中获取自定义动态参数(全局变量)的方式:

pm.globals.get("times")
globals["times"]
globals.times
在这里插入图片描述

**全局断言:**把状态断言放在 项目-edit-tests里面,单个接口就不需要写状态断言了,只需要写业务断言。
在这里插入图片描述
在这里插入图片描述

10.postman 批量运行测试用例

项目-run collection
文件:需要把文件拷贝到工作目录,允许读取工作目录下的文件(settings里打开)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.postman数据驱动之CSV文件和json文件的处理

params取值用{{参数名}}
断言里面取数据(表名.assert_value)
新建一个data.csv文件,填写以下内容
在这里插入图片描述
修改以下内容
在这里插入图片描述
search
在这里插入图片描述
选择对应接口执行
在这里插入图片描述
JSON文件格式,其余步骤一样
在这里插入图片描述
执行结果,迭代四次
在这里插入图片描述

json文件格式:

{“参数1“:”值1”,“参数2“:”值2”,““:””}
{“参数1“:”值1”,“参数2“:”值2”,““:””}

12.测试必须带请求头的接口

settings里关掉ssl 安全认证,headers里传入必传的请求头

常见的请求头:

Host  请求的主机地址
Connection   连接方式
Accept    客户端接收到的数据格式
X-Requested-With  异步请求
User-Agent     客户端的用户类型
Referer   来源
Cookie    Cookie信息
Content-Type     请求内容的格式
不知道哪一个是必传的请求头,就全部试一遍

请求https时要禁用SSL安全认证
在这里插入图片描述
案例
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

13.postman接口Mock Servier服务器

相关视频:https://www.bilibili.com/video/BV11K4y1J7sh?p=18&spm_id_from=pageDriver
后端接口还没有开发完成,前端的业务需要调用后端的接口。

default默认里面可以改返回值,比如:{"error_code":0,msg:"返回成功",data:[]}

success

https://85483510-c7d2-4974-b3b9-58dfc9972716.mock.pstmn.io/test
https://be2e2bd9-9c35-4c05-a5d7-a5fb00aaadea.mock.pstmn.io
在这里插入图片描述

14.postman的Cookie鉴权、token鉴权

cookie是一小段文本,格式为key=value

cookie鉴权的原理:

  1. 当客户端第一次访问服务器的时候,那么服务器就会生成cookie信息,并且在响应头的set-cookie里面把生成的cookie信息发送给客户端。
  2. 当客户端第2-n次访问服务器的时候,那么客户端就会在请求头的cookie带上cookie信息,从而实现鉴权。
    在浏览器-高级可以清除电脑目前所有的cookie

cookie的分类:

  1. 会话cookie:保存在内存,当浏览器关闭之后就会自动清除cookie
  2. 持久cookie:浏览器关闭后不会清除,只有当失效时间到了才会自动清除

token鉴权:使用正则表达式提取第一个接口返的token值

十六、Newman

postman专为接口测试而生,newman是专为postman而生。Newman可以让我们的postman的脚本通过GUI(命令行)的方式运行命令:newman run
常用参数:

-e 引用环境变量
-g 引用全局变量
-d 引用数据文件
-n 指定测试用例迭代的次数
-r cli,html,json,junit --reporter-html-export 指定生成HTML的报告

将这些文件到处到一个文件夹
在这里插入图片描述
目录中输入cmd------> newman run testcase.json -e environment .json -g globals.json -d data.json -r cli,html,json,junit --reporter-html-export report.html
在这里插入图片描述
执行成功会生成一个报告文件 report.html
在这里插入图片描述

十七 Postman+Newman+Jenkins实现接口测试持续集成

  1. 打开Jenkins
    https://www.bilibili.com/video/BV11K4y1J7sh?p=21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值