postman高级用法

断言

如何使用?
在这里插入图片描述

状态码的断言:

  • 快捷代码Status code: Code is 200
  • 断言代码pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
    例子:断言状态码为200
  • 代码pm.test("状态码为200", function () { pm.response.to.have.status(200); });
    返回状态:
    在这里插入图片描述

json数据的断言:

  • 快捷代码Response body:JSON value check
  • 断言代码pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
  • 例子:断言test值内的taost的值
    返回的数据为:
    { "success": true, "code": 10000, "test": ["taost":"成功","num":1]", "data": "50c04c64-c26e-4e66-9d67-d4125b441821" }
  • 代码:pm.test("taost为成功", function () { var jsonData = pm.response.json(); pm.expect(jsonData.test[0].taost).to.eql("成功"); });
    返回状态:
    在这里插入图片描述

断言返回数据是否包含某个字符:

  • 快捷代码Response body:Contains string
  • 断言代码pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });
  • 例子:断言返回的内容是否包含成功
    返回的数据为:
    { "success": true, "code": 10000, "test": ["taost":"成功","num":1]", "data": "50c04c64-c26e-4e66-9d67-d4125b441821" }
  • 代码:pm.test("返回的body内包含成功", function () { pm.expect(pm.response.text()).to.include("成功"); });
    返回状态:
    在这里插入图片描述

断言返回数据是否与预期字符相同:

  • 快捷代码Response body:is equal to a string
  • 断言代码pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
  • 例子:断言返回的内容是否与预期字符相同
    返回的数据为:
    { "success": true, "code": 10000 }
  • 代码:pm.test("返回的字符相同", function () { pm.response.to.have.body('{ "success": true, "code": 10000 }'); });
    返回状态:
    在这里插入图片描述

断言返回头中是否包含指定的响应的头部信息:

  • 快捷代码Response headers:Content-Type headers check

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

  • 例子:断言返回头是否包含Date头部信息
    返回的数据为:

  • 代码:pm.test("返回头包含Date", function () { pm.response.to.have.header("Date"); });
    返回状态:
    在这里插入图片描述

全局变量&环境变量

全局变量&环境变量的设置:

  • 手动设置变量
    在这里插入图片描述
    在这里插入图片描述
  • initial value与current value的注意事项:
    variable: 变量名
    initial value: 分享出去给team中的人用时的变量值,比如通过newman命令测试接口使用的环境变量的值就是它
    current value: 当前自己使用该变量时变量的值
    所以initial value与current value的变量值一般都要有并相同
  • 如何使用?
    {{变量名}}即可使用
    例子:变量名为url,变量值为http://www.baidu.com
    在这里插入图片描述
    等同于get http://www.baidu.com
  • 代码设置全局变量
    • 快捷代码set a globals variable
    • 断言代码pm.globals.set("variable_key", "variable_value");
    • 例子:pm.globals.set("url", "http://www.baidu.com");
  • 代码设置环境变量
    • 快捷代码set an environmentvariable
    • 断言代码pm.environment.set("variable_key", "variable_value");
    • 例子:pm.environment.set("url", "http://www.baidu.com");
  • 高阶用法:
    比如把返回值设置为变量
    例子:把返回code的值设置为全局变量
    获取返回值并以json格式展示:pm.response.json()
    获取返回值并以text格式展示:pm.response.text()
    返回的值:{ "success": true, "code": 10000, "message": "操作成功!", "data": "4170537f-449d-4697-a94e-6dcfcb5add83" }
    代码:var p =pm.response.json(); pm.globals.set("code", p.code);
    此时,全局变量增加一个code的变量

请求增加cookies

  • 单个请求使用cookies
    直接在hesders下增加Cookie就行了,如图:
    在这里插入图片描述

  • 指定域名使用cookies
    比如需要增加一下cookie
    在这里插入图片描述

点击cookies:
在这里插入图片描述
输入需要使用cookie的域名比如www.test.com
在这里插入图片描述
在该域名下添加cookie:
在这里插入图片描述
注意假如是多个cookie则使用逗号分割比如:JSESSIONID=QSGASEG7ASD78FS5,TT=SDASF74521135;

前置脚本(异步请求)

发送GET请求
  • 代码片:
const url = 'https://free-api.heweather.net/s6/weather/now?location=101100102&key=db86a5196f304e52a4369818c5182e60';
// 发送get请求
pm.sendRequest(url, function (err, res) {
  console.log(err ? err : res.text());  // 控制台打印请求文本
});

可配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
例如:

const url = 'https://free-api.heweather.net/s6/weather/now?location=101100102&key=db86a5196f304e52a4369818c5182e60';
// 发送get请求
pm.sendRequest(url, function (err, res) {
  console.log(err ? err : json=res.json());  // 控制台打印请求文本
  pm.environment.set("cnty",json.HeWeather6[0].basic.cnty); //将返回值存至环境变量
});
发送表单格式Post请求
  • 代码片:
//构造一个登录请求
const loginRequest = {
    url: 'http://dict.youdao.com/suggest/',
    method: "POST",
    body: {
        mode: 'urlencoded',  // 模式为表单url编码模式
        urlencoded: 'name=张三&password=123456'
    }
};

// 发送请求
pm.sendRequest(loginRequest, function (err, res) {
    console.log(err ? err : res.text());
});

可配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
例如:

//构造一个登录请求
const loginRequest = {
    url: 'http://dict.youdao.com/suggest/',
    method: "POST",
    body: {
        mode: 'urlencoded',  // 模式为表单url编码模式
        urlencoded: 'name=张三&password=123456'
    }
};

// 发送请求
pm.sendRequest(loginRequest, function (err, res) {
    console.log(err ? err : text=res.text());
    pm.environment.set("cnty",text);
});
发送JSON格式请求
  • 代码片:
// 构造一个注册请求
const regRequest = {
  url: 'http://dict.youdao.com/suggest/',
  method: 'POST',
  header: {"Content-Type": "application/json"},  //注意要在Header中声明内容使用的类型
  body: {
    mode: 'raw',  // 使用raw(原始)格式
    raw: JSON.stringify({ name: '小小', password: '123456' }) //要将JSON对象转为文本发送
  }
};

//发送请求
pm.sendRequest(regRequest, function (err, res) {
  console.log(err ? err : res.json());  // 响应为JSON格式可以使用res.json()获取到JSON对象
});

可配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
例如:

// 构造一个注册请求
const regRequest = {
  url: 'http://dict.youdao.com/suggest/',
  method: 'POST',
  header: {"Content-Type": "application/json"},  //注意要在Header中声明内容使用的类型
  body: {
    mode: 'raw',  // 使用raw(原始)格式
    raw: JSON.stringify({ name: '小小', password: '123456' }) //要将JSON对象转为文本发送
  }
};

//发送请求
pm.sendRequest(regRequest, function (err, res) {
  console.log(err ? err : json=res.json());  // 响应为JSON格式可以使用res.json()获取到JSON对象
  pm.environment.set("cnty",json.HeWeather6[0].basic.cnty);
});
发送XML格式请求
  • 代码片:
//构造请求
const demoRequest = {
  url: 'http://httpbin.org/post',
  method: 'POST',
  header: {"Content-Type": "application/xml"},  // 请求头种指定内容格式
  body: {
    mode: 'raw',
    raw: '<xml>hello</xml>'  // 按文本格式发送xml
  }
};

//发送请求
pm.sendRequest(demoRequest, function (err, res) {
  console.log(err ? err : res.json());
});

可配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
例如:

//构造请求
const demoRequest = {
  url: 'http://httpbin.org/post',
  method: 'POST',
  header: {"Content-Type": "application/xml"},  // 请求头种指定内容格式
  body: {
    mode: 'raw',
    raw: '<xml>hello</xml>'  // 按文本格式发送xml
  }
};

//发送请求
pm.sendRequest(demoRequest, function (err, res) {
  console.log(err ? err : json=res.json());
  pm.environment.set("cnty",json.HeWeather6[0].basic.cnty);
});

参数化&测试报告

参数化

使用场景:针对单个接口,存在大量数据需要批量测试的情况,我们通过读取外部存放的文件进行逐行执行脚本

csv格式:
在这里插入图片描述
注意:乱码问题使用notepad++或者默认文本编辑器转换utf-8格式

json格式:[{"name":"xiaoming","avg":"18"}, {"name":"xiaohua","avg":"24"}]

  • 如何导入?
    在这里插入图片描述
    在这里插入图片描述

  • 如何使用?
    获取参数的2种方法:

    • 请求参数可以通过{{name}}来引用
    • 断言中的数据,由于是在Tests中编写脚本,不能通过{{name}}来引用,可以通过变量data来获取
    • 例如var name= data.name;
    • 批量断言代码
      下面展示一些 常用批量断言代码
tests['成功']= String(data.预期结果).match(pm.response.text()); //判断返回结果是否被预期结果包含
tests['成功']= String(data.预期结果)===pm.response.text();//判断返回结果是否与预期结果相同
  • 批量导入headers(请在前置脚本使用,多个头请用标点符合分割):
// headers的数据为 "X-Test-Request:f533b0532a413f115dsaasdd5,Content-Type:application/json"
var list=String(data.headers).split("\r\n,"); //分割成列表
for (i in list){
    pm.request.headers.add(list[i]); //使用for循环依次添加headers
}

测试报告

  • 前置软件:已安装nodenode -v查看
    安装Newman:cmd输入npn install -g newman,newman -v查看是否安装完成
    安装newman-reporter-html:cmd输入npm install -g newman-reporter-html
  • 导出测试集和环境变量:
    在这里插入图片描述

在这里插入图片描述

  • 测试报告的生成:
    将测试集文件,环境变量,csv参数文件放在同一个文件夹,然后在当前目录打开cdm,并执行生成报告命令
    命令:newman run 测试集文件 -g 全局变量文件 -e 环境变量文件 -d csv参数文件 -r html
    执行完成会在当前文件夹生成newman文件夹,并在newman文件夹下生成html格式的测试报告

  • Newman参数介绍

    1、使用 -n 参数来设置集合迭代的次数
    newman run 集合名称.json -n 集合迭代次数
    2、使用 -d 参数来设置集合使用的参数化数据文件
    newman run 集合名称.json -d 参数路径\参数文件名称
    3、使用 -e 参数设置集合环境变量文件
    newman run 集合名称.json -e 参数路径\环境变量文件名称
    4、使用 -g 参数指定全局变量的文件地址或ur
    newman run 集合名称.json -e 参数路径\全局环境变量文件名称
    5、 --folder 运行集合中指定的文件夹,如集合下存在文件(前端接口),使用该命名,则只运行集合中前端接口文件下的接口
    6、–export-environment 导出该运行集合中的环境变量文件 可指定路径和名称
    newman run d:\登录测试\.postman_collection.json -e d:\测试项目.postman_environment.json -d d:\搜索测试.csv ----export-environment d:\test
    7、–export-globals 导出全局环境变量
    8、–export-collection 导出集合文件
    9、–timeout (ms) 设置整个集合运行完成执行的时间
    10、–timeport-request (ms) 指定等待请求返回响应的时间
    11、–timeout-script (ms)指定等待脚本执行完成的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值