【PostMan使用】PostMan的简单使用教程

本文详细介绍了Postman接口测试的各种操作,包括GET、POST请求,文件上传,环境变量设置,Pre-request Script和Tests断言的使用。还探讨了数据驱动测试,Newman持续集成,以及Windows定时任务和Jenkins集成,为API测试提供了全面的实践指导。
摘要由CSDN通过智能技术生成

1、接口请求的类型

1.1GET请求

忽略~

1.2POST请求

在这里插入图片描述

1.3文件上传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sX9P6I67-1616496008737)(https://i.loli.net/2021/03/12/3uEeD2wA4fFqmgy.png)]

2.设置环境变量

场景一:
  • 在测试过程中,都是使用一个测试地址,就可以把被测地址设置为环境变量
1.右上角有个No Environment,点击查看Environment-Add

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4IyotZk-1616496008738)(https://i.loli.net/2021/03/12/Mrtp3J9uUbqyGjh.png)]

2.设置对应的变量值,key-value,可以设置多个(根据需要设置),需要点保存才可使用!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kP5rcvyt-1616496008740)(https://i.loli.net/2021/03/12/FpJxMmGRXKTAwBr.png)]

3.选择需要使用的环境变量,使用{{就是在环境变量里面设置的variable}}括起来

在这里插入图片描述

场景二:
  • 设置全局变量,把登陆的Token设置为全局变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9gg9gbD-1616496008742)(https://i.loli.net/2021/03/12/pJMeEgdmXlxj6LQ.png)]

场景三:
  • 上一个请求的结果作为下一个请求接口的入参
/* 
1.在上一个接口中获取title的结果数据,并设置为环境变量
2.在下一个接口中直接只用{{变量名}} 即可
*/
// 或者一个title作为下一个请求接口的入参
var title0 = pm.response.json().aaData[0].itemVOList[0].title
console.log(title0)
pm.environment.set("search_title", title0);


// 下一个接口的断言
// 判断状态是否为200
pm.test("状态码是否等于:200", function () {
    pm.response.to.have.status(200);
});
pm.test("判断查询出的条数是否等于:1", function () {
    console.log(pm.response.json().iTotalRecords)
    pm.expect(pm.response.json().iTotalRecords).equal(1);
});

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fBFQyV7U-1616496008743)(https://i.loli.net/2021/03/12/aI7KWqoZFzCjHnL.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwUFt4sd-1616496008743)(https://i.loli.net/2021/03/12/YcXmNsUVzq9BShn.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0CXQCeB-1616496008744)(https://i.loli.net/2021/03/12/1kPRcrnSCzYO6qh.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRLhg1Nn-1616496008744)(https://i.loli.net/2021/03/12/NHgGuDK5Ccwy3nV.png)]

3.Pre-request Script(请求前设置)

// 定义一个新的变量来接受需要改变的值
var new_kw = pm.variables.get("kw");
console.log(new_kw)
// 重新定义一个新的值,如果需要定义多个的话  使用数据驱动  data.xx
var new_kw = "book"
// 设置变量 kw 为新的值
pm.variables.set("kw", new_kw)
console.log(new_kw)

    
// 使用数据驱动断言
    
// 获取json数据
var json_data = pm.response.json()
pm.test("校验翻译的单词是否正确:" + json_data.data[0].k , function () {
    pm.expect(json_data.data[0].k).to.include(data.kw);
});

1.未改变之前的变量值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sYCB4Dgw-1616496008745)(https://i.loli.net/2021/03/12/cGIMmLXTjYtiRe8.png)]2.使用pre-request Script修改接口参数2.使用pre-request Script修改接口参数
在这里插入图片描述

3.请求的结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DJ5TEpMb-1616496008746)(https://i.loli.net/2021/03/12/Bihjgw7zUtardYc.png)]

4.数据驱动请求的结果断言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xztDR8qL-1616496008746)(https://i.loli.net/2021/03/12/Yc1dprAVwnu2b4k.png)]

4.运行测试集

在这里插入图片描述

5.Tests 断言

  • 返回数据为Json格式
// 判断状态码是否为200
pm.test("状态码为200", function () {
    //pm:postman response:影响的接口信息 to.have.status:状态是否等于200
    pm.response.to.have.status(200);
});



// 判断返回的响应结果是否包含某个字段
pm.test("message为ok", function () {
    // var 定义一个变量   pm.response.json()获取响应的json信息
    var jsonData = pm.response.json();
    // 获取json对应依次获取使用.
    pm.expect(jsonData.data.aData).includes("OK");
});


// 获取微信内容的标题

// 获取长度
var num = pm.response.json().iTotalRecords
// 循环获取每个封面的标题
for (var i=0; i<num;i++){
    var title = pm.response.json().aaData[i].materialTitle
    pm.test("包含测试的标题:" + title, function () {
            pm.expect(title).to.includes("测试");
        });
    console.log(title)
}

在这里插入图片描述

Tests的八大断言
// 1.检查接口的状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
// 2.检查响应结果是否包含某个字符串
pm.test("Body matches string", function () {
    tests["Body matches string"] = responseBody.has("string_you_want_to_search");
或
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
// 3.对json返回的字符串做校验
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
// 4.校验返回的请求头信息
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});
// 5.校验接口的响应时间
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});
// 6.校验接口的状态码是否包含以下状态
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
// 7.校验响应中状态是否包含Created
pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});
// 8.转化XML格式的响应成JSON对象
var jsonObject = xml2Json(responseBody);

## `https://www.jianshu.com/p/762076988bcb`
  • 断言的方式
# 1.Json 提取器
var jsonData = pm.response.json();
console.log(jsonData.data.value)
    
# 2.正则表达式
str1 = "12dsds4d512s1d2ds"
match是使用正则表达式进行匹配, new RegExp是创建匹配规则
str2 = str1.match(new RegExp('12(.*?)4'))[1];
console.log(str2)    
 

6.测试驱动

1.数据驱动的变量设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zsNcnUiX-1616496008751)(https://i.loli.net/2021/03/12/zIGrUF9qAT6Cbpx.png)]

2.对请求的接口进行断言

// 对每次请求的数据进行断言
pm.test("CRM登陆接口测试用例", function () {
    pm.expect(pm.response.text()).to.include(data.expect);
});

3.选择对应的数据文佳

在这里插入图片描述

4.执行结果

在这里插入图片描述

7.Newman持续集成

  • 安装node:

    • 安装nodejs:http://nodejs.cn/download/根据不同系统下载对应的安装包
    • msiexec /package 文件包的路径(最好是绝对路径)
  • 验证是否安装成功:https://www.cnblogs.com/yangjiming/p/12039700.html参考此篇文献

    node -v
    npm -v
    
  


+ 安装newman

```shell
npm install newman


npm install -g newman --registry=http://registry.npm.taobao.org

生成html报告需要安装newman-reporter-html

npm install -g newman-reporter-html


newman -v
# 测试不成功的话  设置系统环境变量
添加:系统变量NODE_PATH:C:\Program Files\nodejs\node_modules
path添加:C:\Users\Du\AppData\Roaming\npm


再次测试 win+R 打开命令行窗口,输入: newman -v
输出:5.2.2

  • Newman 运行postman collections
    • 1.导出collections:在collection选项菜单选择export,导出为json文件
    • 2.newman执行 newman run 导出的json文件名 通过newman命令运行测试集
newman run C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json -d C:\Users\Du\Desktop\Postman\crm-test\data_file.csv -e C:\Users\Du\Desktop\Postman\crm-test\数据驱动环境.postman_environment.json


newman run C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json --reporters html --reporter-html-export  C:\Users\Du\Desktop\Postman\crm-test\html01.html
# --reporters 输出的测试报告
# -d     数据驱动的文件地址
# -e	 环境变量的json地址
  • newman执行测试常用的参数
-e   --environment   使用环境变量文件或者url
newman run 测试集地址 -e 环境变量地址

-g   --global        使用全局变量文件或url,先导出全局变量文件

-d   --iteration-data 指定使用的数据驱动文件
newman run 测试集地址 -d 驱动文件地址

-n                    指定测试集循环的次数
newman run 测试集地址 -n 2
  • 命令行的执行结果
    在这里插入图片描述
1.Windows的定时任务参考:

参考:https://www.cnblogs.com/bmwchampion/archive/2010/08/21/autotimingexcutejob.html

2.Jenkins集成

1.jenkins创建一个自由风格的项目
2.设置构建环境
在这里插入图片描述

newman run  C:\Users\Du\Desktop\Postman\crm-test\测试驱动DDT.postman_collection.json -d C:\Users\Du\Desktop\Postman\crm-test\data_file.csv -e C:\Users\Du\Desktop\Postman\crm-test\数据驱动环境.postman_environment.json --reporters html --reporter-html-export  C:\Users\Du\Desktop\Postman\crm-test\html1.html

【问题】

# 1. npm安装报错,删除用户下的.npmrc文件
解决:https://blog.csdn.net/qq_35457469/article/details/102924524
     https://www.cnblogs.com/miaomiaoka/p/11168642.html

# 2.无法找到newman命令
解决:带上newman的全路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值