postman 使用实践教程图文详解

  • 1.环境变量设置
    • 1.1切换环境变量
    • 1.2查看当前的环境变量和全局变量
    • 1.3编辑环境变量和全局变量
  • 2.postman前置脚本动态传参
    • 2.1递增传参
      • 2.1.1设置环境变量名和环境变量值
      • 2.2.2在Pre-request Script写请求前的脚本
      • 2.2.3在body里面引入环境变量
      • 2.2.4每发送一次请求,变量现值就会递增
  • 3.postman断言
  • 4.获取响应体某个字段设置为环境变量
  • 5.断言数据校验实例
    • 5.1案例1
  • 6.测试集运行
  • 7.Newman安装
    • 7.1安装nodejs
    • 7.2安装Newman
    • 7.3Newman执行测试
      • 7.3.1导出collections
      • 7.3.2在cmd窗口Newman执行collection导出的json文件
    • 7.4Newman常用参数
    • 7.5Newman测试报告
      • 7.5.1Newman命令变成批处理
      • 7.5.2Newman命令变成定时任务

1.环境变量设置

1.1切换环境变量

1.2查看当前的环境变量和全局变量

1.3编辑环境变量和全局变量

使用环境变量步骤


使用全局变量步骤

2.postman前置脚本动态传参

2.1递增传参

递增传参使用场景
当接口某个参数要求输入是唯一的时候。不想重复手动输入,可设置一个递增传参。每按Send一次。先把参数的值+1以后再进行发送。

2.1.1设置环境变量名和环境变量值

2.2.2在Pre-request Script写请求前的脚本

var smsCode = parseInt(pm.environment.get("chs"));   //获取环境变量名为"chs"的变量值转int类型 并且赋予给变量smsCode
smsCode += 1;               //变量smsCode递增
pm.environment.set("chs", smsCode);         //重新赋予变量名为"chs"的变量值

2.2.3在body里面引入环境变量

2.2.4每发送一次请求,变量现值就会递增

3.postman断言

Getting an environment variable(获取环境变量)

pm.environment.get("variable_key");

Get a global variable(获取全局变量)

pm.globals.get("variable_key");

Get a variable (获取变量)

pm.variables.get("variable_key");

Setting an environment variable (设置环境变量)

pm.environment.set("variable_key", "variable_value");

Set a global variable (设置全局变量)

pm.globals.set("variable_key", "variable_value");

Clear an environment variable (清除环境变量)

pm.environment.unset("variable_key");

Clear a global variable (清除全局变量)

pm.globals.unset("variable_key");

Status code:Status code is 200 (校验状态码是否为200)

pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});

Responsed body:Contains string (校验响应体是否包含某个字符串)

pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

Responsed body:JSON value check (校验返回的字段value是否与预期100一致)

pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);
});

Responsed body:Is equal to a string (校验返回的body里面的内容是否都与预期一致)

pm.test("Body is correct", function () {pm.response.to.have.body("response_body_string");
});

Responsed headers:Content-Type header check (校验响应中的头域信息Headers是否与预期一致)

pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});

Responsed time is less than 200ms (校验响应时间是否少于200毫秒)

pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});

Status code:Successful POST request (校验响应码code是否与预期集合中的某个值一致)

pm.test("Successful POST request", function () {pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

Status code:Code name has string (校验响应信息中是否包含某个预期值)

pm.test("Status code name has string", function () {pm.response.to.have.status("Created");
});

Response body:Convert XML body to a JSON Object (转化XML格式的响应成JSON对象)

var jsonObject = xml2Json(responseBody);

4.获取响应体某个字段设置为环境变量


var data=JSON.parse(responseBody);  //将响应的数据解析成json格式赋予给data变量
var a=data.result.nickName;         //获取nickName值赋予变量a
pm.environment.set("Name", a);    //设置环境变量变量名为Name并赋予变量a的值var data=JSON.parse(responseBody);  //将响应的数据解析成json格式赋予给data变量
var b=data.result.token;         //获取token值赋予变量b
pm.environment.set("NewToken", b);    //设置环境变量变量名为NewToken并赋予变量b的值

脚本写好后,按send发送即成功

附上一段相关字段的取值知识

var a=data.result.nickName;         //获取nickName值赋予变量a
var b=data.result.token;                //获取token值赋予变量b
var c=data.code;                           //获取code值赋予变量c

5.断言数据校验实例

5.1案例1

{"code": 200,"message": "操作成功","result": [{"date": 1,"count": 2,"amount": 168800},{"date": 2,"count": 1,"amount": 110001}],"subCode": 0
}

问题1:校验result里面第一组数据值是否正确
问题2:校验result里面第二组数据的count值是否等于1

代码参考:

pm.test("result里面第1组数据中的值正确", function () {var jsonData = pm.response.json();pm.expect(jsonData.result[0]).to.eql({date: 1, count: 2, amount: 168800});  //校验result里面第1组数据中的值是否相等
});pm.test("result里面第2组数据中的count值等于1", function () {var jsonData = pm.response.json();pm.expect(jsonData.result[1].count).to.eql(1);          //校验result里面第2组数据中的count值是否等于1
});

6.测试集运行

问题1:校验输入的手机号码与返回的name是否一致
问题2:校验输入的手机号码与返回的mobile是否一致


代码参考如下

pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.result.rows[0].name).to.eql("三国杀");   //校验返回的name字段与三国杀是否一致
});pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.result.rows[0].mobile).to.eql("18822222222");  //校验返回的mobile字段与18822222222是否一致
});

问题3:集成测试里面如何校验多组数据


假定我们需要校验这四组数据
如果输入手机号码,校验返回的mobile与name是否一致。

1.首先我们需要把要使用到的变量填写到excel表里面
2.将excel表格式转换成csv格式
3.csv的编码格式转换成utf-8,以防乱码
4.csv编码格式转换以后,需要另存为保存

1.创建test.xlsx的excel名称,并且先定义3个变量的名称。存放4组测试数据。

2.将excel表格式转换成csv格式

3.再将csv格式的编码改为utf-8


4.csv编码格式转换以后,需要另存为保存

首先来看看我的Body如何设置。接口返回的数据


根据返回的数据编写脚本进行校验

以下是测试集运行



7.Newman安装

postman使用newman插件完成命令执行postman脚本,因为如果需要用命令行运行脚本,需要首先安装Newman

官方文档:https://www.npmjs.com/package/newman

7.1安装nodejs

官网下载地址:http://nodejs.cn/download/,根据自己的操作系统进行下载,下载之后直接运行安装。安装之后确认环境变量中已经添加了node所在目录,否则手动添加。

确认cmd中输入node -v和npm -v命令确认node环境是否已经搭建成功

7.2安装Newman

7.3Newman执行测试

Newman允许postman collections
安装好newman之后,可以通过命令执行postman测试集中的脚本
官方文档:https://www.npmjs.com/pacgage/newman
https://learning.getpostman.com/docs/postman/collection_runs/command_line_intergration_with_newman/

7.3.1导出collections

在collection选项菜单中选export,导出json文件


7.3.2在cmd窗口Newman执行collection导出的json文件


因为没有带出环境变量。所以会报错

7.4Newman常用参数

-e -environment使用环境变量文件或url
-g -global 使用全局变量或url
-d -iteration-data指定使用的数据驱动文件
-n 指定测试集循环次数iterations

以下示范一个使用数据驱动的
首先我是有一份csv文件是存放变量的


7.5Newman测试报告

Newman提供的测试报告中,常用的包括cli,json,html三种格式。可以通过r或者–report命令指定所用格式。–report-json-export参数指定报告生成路径

  • cli格式为cmd客户端呈现的报告模板。newman默认使用cli格式

  • json格式可以导出json报告,通过-r json进行设置.–report-json-export参数指定报告生成路径

  • html格式可以导出html格式报告,通过-r html进行设置–report-html-export参数指定报告生成路径

在使用htm格式之前,需要通过npm install newman-reporter-html -g进行安装



展现cli格式的report同时生成一个aaa.html

newman run D:\测试集.postman_collection.json -d D:\LG\test.csv -n 4 -r cli,html --reporter-html-export D:\LG\aaa.html

7.5.1Newman命令变成批处理

  1. 首先将这条命令进行复制
  2. 新建文本文档粘贴这条命令
  3. 保存以后把后缀改为.bat
  4. 只要双击批处理.bat就能自动生成html脚本与cli格式的预览

可能遇到双击后,没有生成脚本。文字出现乱码。
解决方法:将所有文档改为英文命名

7.5.2Newman命令变成定时任务

1.计算机右击,点击管理

2.任务计划程序-创建任务-常规-填写名称


3.触发器-新建-根据需求设置-确定

4.操作-新建-选择批处理文件的路径-确定

5.任务计划程序库即可查看新建的定时任务

6.只要设置定时任务的时间一到即自动生成html

看完如果对你有帮助,感谢点赞支持!!!

postman使用实践教程图文详解相关推荐

  1. python3.6安装教程-python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  2. python详细安装教程环境配置-python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  3. python3.6.0怎么安装pip_python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  4. mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解

    1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...

  5. MySQL Installer 8.0.21安装教程图文详解 转载

    MySQL Installer 8.0.21安装教程图文详解 原地址 1. 缘由 刚好需要在新系统上重新安装MySQL,便写了一份的下载安装教程,供查阅,以防日后细节有所遗忘. 2. 版本说明 MyS ...

  6. GitHub 使用教程图文详解(转)

    大纲: 一.前言 二.GitHub简介 三.注册GitHub账号 四.配置GitHub 五.使用GitHub 六.参与GitHub中其它开源项目 七.总结 注,GitHub官网:https://git ...

  7. storyboard(故事版)新手教程 图文详解 3.在故事版上使用scrollview

    继上一篇内容storyboard(故事版)新手教程 图文详解 2.为无约束的故事版添加约束 选中item2 此时上面什么都没有 添加一个scrollview 添加上下左右边距都为零 更新frame(不 ...

  8. mysql8.0.20 64位安装教程_windows 64位下MySQL 8.0.15安装教程图文详解

    先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置系统环境变量 复制解压后的mysql到C盘或者其他磁盘下 我们去系统的环境变量的path里添加一个mysql的配置  指向my ...

  9. mysql 8.064位安装_windows64位下MySQL8.0.15安装教程图文详解

    先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置系统环境变量 复制解压后的mysql到C盘或者其他磁盘下 我们去系统的环境变量的path里添加一个mysql的配置  指向my ...

最新文章

  1. AI一分钟 | 谷歌CEO承诺在中国组建更大团队;苹果与清华大学成立研究中心,并将帮助30万名贫困学生
  2. redis完整笔记总结-数据类型-事务与锁-集群-分布式锁-常见问题(缓存穿透、击穿、雪崩)
  3. webapi支持session
  4. hdu5025 状态压缩广搜
  5. AP1242G胖转瘦,廋转胖
  6. Silverlight动态创建Gird
  7. springAop和AspectJ的关系
  8. Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
  9. linux主机设备acl,linux上的终端类型、ACL、PAM模块
  10. 有没有发现4G网速越来越慢了?
  11. [ubuntu] tmux 窗口不是全屏
  12. Android FrameWork——Binder机制详解(2)
  13. java中bitconverter_【Java】BitConverter(数字转字节数组工具类)
  14. hive出现内存溢出_hive问题处理
  15. win10找回自带的windows照片查看器——打开jpg、png、gif、psd其他格式的图片
  16. Spring框架中的单例Beans是线程安全的么
  17. 电脑系统修复之--Windows系统开机蓝屏 EFI Network 0 for IPv4(XX-XX-XX-XX-XX)boot failed.
  18. ubuntu系统忘记密码(win+ubuntu双系统)
  19. ROS获取串口信息及后续处理(以惯导IMU XW-GI5651为例)
  20. 小巧的本地缓存Jodd

热门文章

  1. STC8学习--看门狗
  2. 前端-个人网页开发最常用的插件Superslide 与 swiper
  3. 串口调试工具xshell的配置
  4. 服务器空间在线解压程序及使用教程
  5. 搜索(2) --丁香园
  6. open falcon 监控php,小米监控系统open-falcon安装
  7. 如何用VOSviewer分析CNKI数据?
  8. [读书笔记]软件架构师职业导读
  9. mybatis mysql查询树形结构_mybatis树结构查询的方法
  10. STM32F4通过U盘升级程序