postman基本使用

发布时间 2023-07-10 16:51:12作者: 天才九少

正文:

  • postman测试报告插件newman
  • 管理测试用例Collections
  • postman断言
  • 全局变量和环境变量
  • postman的关联
  • postman生成测试报告
  • postman参数化

====================================================================================

安装postman测试报告插件newman

1,先安装Node.js:https://nodejs.cn/download/

检查node.js是否安装成功:npm -v

2,安装newman:

npm install -g newman

检查是否安装成功

newman -v

3,安装newman插件newman-reporter-html

安装命令:

npm install -g newman-reporter-html

postman基本使用

https://blog.csdn.net/qq_41099091/article/details/107319193

 

====================================================================================

 管理测试用例Collections

导出测试用例集

使用默认方式导出即可

导入测试用例集

 

====================================================================================

postman断言

断言代码写在Tests的标签中,可以进行多个断言

  1. 断言响应状态码
  2. 断言响应体是否包含某个字符串
  3. 断言响应体是否等于某个字符串
  4. 断言JSON数据
  5. 断言响应头

1,断言响应状态码

Status code: Code is 200

(1)在Tests标签中,选中Status Code:code is 200,生成相应代码

(2)适当调整test()方法参数1,和匿名函数中的预期结果

(3)点击send按钮,发生请求,执行断言代码

(4)查看断言结果

JS代码分析

//断言响应状态码 是否为 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm:代表postman的一个实例
test():是pm实例的一个方法,有两个参数:
    参数1:在断言成功后,给出的文字提示,可以修改,"Status code is 200"
    参数2:匿名函数
pm.response.to.have.status(200);
//意思:postman的响应结果中应该包含状态码200

断言结果

2,断言响应体是否包含某个字符串

Response body: Contains string

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

3,断言响应体是否等于某个字符串

Response body: ls equal to a string

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

4,断言JSON数据

Response body: JSON value check

//断言json的响应结果
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

var jsonData = pm.response.json();
//var jsonData 用 js 语法定义的一个变量,jsonData就是变量名
//pm.response.json();代表响应的json结果
//举例:response.json();
/*
{
    "success":true,
    "code":10000,
    "message":"操作成功!",
    "data":"95c78d75-721c-40fb-b2d5-742fea42cbd5"
}
*/
pm.expect(jsonData.value).to.eql(100);
//pm 预期 json结果 key 对应的值 等于 xxx
/*举例:
    jsonData.value 的 value 可以取:
    success、code、message、data
*/

5,断言响应头

Response headers: Content-Type header check

//断言响应头
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

pm.response.to.have.header("Content-Type")
//pm 的响应头 中包含 Content-Type

//示例:可以在header中,添加响应头中的key对应的value判定。用,隔分。
//断言响应头
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type","application/json;charset=UTF-8");
});

 postman断言工作原理

 

====================================================================================

全局变量和环境变量

设置变量

全局变量

  1. 手动设置
  2. 代码设置
pm.globals.set("varname", value);

环境变量

  1. 手动设置
  2. 代码设置
pm.environment.set("var_name", value);

获取环境变量

全局变量

  1. 请求参数中获取:{{var_name}}
  2. 代码中获取:var value = pm.globals.get("var_name");

环境变量

  1. 请求参数中获取:{{var_name}}
  2. 代码中获取:var value = pm.environment.get("var_name");

postman请求前置脚本

实现步骤:

1,在Pre-request Script标签页中,添加代码,拿到时间戳,写入全局变量

2,点击Send 按钮,发送请求,请求发送前执行上述代码,写入全局变量

3,查看写入的变量

4,在请求参数(界面:Params\Headers),使用全局变量名。{{全局变量名}}

5,在postman的控制台,查看发送的http请求。

设置时间戳

使用时间戳

打开postman控制台可以检查发送请求是否带了时间戳

 

工作原理图

 

====================================================================================

postman的关联

应用于多个http请求之间,有数据关联、或依赖关系时。

实现步骤:

A接口 依赖 B接口 的数据

  1. 向B接口发送http请求,获取数据
  2. 将数据设置 至 全局变量(环境变量)中
  3. A 接口获取全局变量(环境变量)中 数据值,进行使用

案例:

请求 获取天气接口,提取响应结果中的 城市,将城市给百度搜索接口使用
获取天气接口:http://www.weather.com.cn/data/sk/101010100.htm!

实现步骤:

1,创建用例集,分别创建查询天气请求和百度搜索请求

 2,在查询天气请求Tests中,编写代码获取城市名,写入全局变量。

 3,点击Send按钮,发送请求,查看设置的全局变量

4,修改百度搜索请求,使用全局变量,按城市名进行搜索。

====================================================================================

postman生成测试报告

批量执行测试用例

第一步

第二步

postman生成测试报告

1,批量执行测试用例(确认无误)

2,导出测试用例集(得到xxx.json文件)

3,使用newman命令,运行导出的测试集脚本,打开cmd输入:

newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export report.html

eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html

命令说明

  • run xxx.json : 表示要执行的postman脚本,即导出的测试集数据
  • -e source : 用来指定环境变量文件的路径
  • -d source : 用来指定测试数据文件的路径

====================================================================================

postman参数化

导入数据文件

  • csv文件
  • json文件

csv文件

优点:

  数据组织形式简单,适用于大量数据场合

缺点:

  1,不支持bool类型数据。(数据被postman读入后,自动添加""包裹boo值,如”True“)

  2,不支持多参、少参、无参、错误参数的接口测试

  3,不支持复杂数据类型。(如嵌套字典、列表等)

 

json文件

优点:

  1,支持bool类型

  2,支持多参、少参、无参、错误参数

  3,支持复杂数据类型

缺点:
  对于相同的数据量,json数据文件大小远大于csv文件

导入数据文件

csv文件

1,创建xxx.csv文件

2,将数据写入到csv文件中。

  • 第一行写入的是数据对应的”字段名“
  • 从第二行向后依次是对应的数值,数据间用英文逗号隔分

3,在Postman中,选中使用数据文件的用例集,导入数据文件

  1. 点击用例集名称,使用Run按钮,进入“Runner”页面。
  2. 使用“Select File”按钮选择 xxx.csv文件
  3. 点击预览按钮,校验数据文件是否正确

json文件

1,创建xxx.json数据文件

2,在数据文件中,按json语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层,必须是[]。内部所有的数据用 [] 存储。(建议使用json.cn在线网站编写)

3,在Postman中,选中使用数据文件的用例集,导入数据文件

  1. 点击用例集名称,使用Run按钮,进入“Runner”页面。
  2. 使用“Select File”按钮选择 xxx.json文件
  3. 点击预览按钮,校验数据文件是否正确

 

读取数据文件数据

根据使用数据 位置 不同,有两种获取数据文件中数据的方法

第一种:请求参数(请求行Params、请求头Headers、请求体Body) 中,使用 数据文件中 的数据

  使用{{}}包裹csv文件字段名或json文件中的key

    如:{{username}}或{{password}}

第二种:代码 (断言Tests、请求前置脚本Pre-request) 中,使用 数据文件中 的数据

  需要借助 postman 提供的 关键 data 点 csv 文件的字段名或son文件的 key

    如: data.password 或 data.username 

 接口:http://cx.shouji.360.cn/phonearea.php?number=13012345678

1,测试单个接口,工作中 参数 和响应体 数据对应关系。

2,写好数据文件,按csv或json对应的语法格式组织数据 

3,替换 上述用例中的 两处:

  • 归属地:在代码中,用data.字段名 替换
  • 手机号:在查询参数中。用{{字段名}}替换

4,选择使用数据文件的用例集,进入 Runner 页面。导入数据文件。运行

5,如果有异常,借助postman控制台,查看

使用json文件

生成测试报告

步骤:

1,批量执行测试用例 (借助数据文件)

2,导出 测试用例集(建议与 数据文件放在一起)  

3,执行生成测试报告的命令,注意文件路径

 

添加环境

打开小眼睛查看

 

注意保存用例Ctrl+s(不要有小红点)

 

 

 

 

 

 

学习自黑马测试