Postman - Tests

HollowPan / 2023-05-03 / 原文

Postman

Tests - JavaScript

设置环境变量

// 解析response中的json
var jsonData = pm.response.json();
// 设置access_token环境变量
pm.environment.set("access_token", jsonData.access_token);
// 设置access_token集合变量
pm.collectionVariables.set("access_token", jsonData.access_token);
// 设置全局变量
pm.globals.set("variable_key", "variable_value");
// 设置临时变量
pm.variables.set("variable_key", "variable_value");
// 删除环境变量
pm.environment.unset("variable_key");

在脚本中使用变量

// 在任何范围内访问变量,包括本地
pm.variables.get("variable_key");
// 获取全局变量的值
pm.globals.get("variable_key");
// 获取集合变量的值
pm.collectionVariables.get("variable_key");
// 获取环境变量的值
pm.environment.get("variable_key");

引用变量

  • {{变量名}}

  • 请求body通过将变量的引用括在双引号中来访问变量

  • { "customer_id" : "{{cust_id}}" }
    

动态变量(当输入{ 的时候,会自动显示三种随机变量)

​ 应用:注册接口,注册一个账号后就不能重复注册

  • {{$guid}} :uuid-v4样式的guidimage-20230502111206495
  • {{$timestamp}}:当前时间戳(Unix时间戳,以秒为单位)
  • {{$randomInt}}:0到1000之间的随机整数

RUN运行

image-20230502111206496

参数化引用外部.csv/.json测试数据

第一行写变量的名称,后面每行写测试数据

QQ截图20230502130941

获取变量的值

// 在Console中打印csv文件中的principal值
var username = pm.iterationData.get("principal")
console.log(username)

断言

1、校验返回的body是json格式

pm.test("response must be valid and have a body", function () {
     pm.response.to.be.ok;
     pm.response.to.be.withBody;
     pm.response.to.be.json;
});

2、对提取的返回结果校验

// 校验code为0
pm.test("response code must to be 0", function(){
    pm.expect(pm.response.json().code).to.equal(0);
});

//校验msg 为 login success!
pm.test("response msg must to be login success!", function(){
    pm.expect(pm.response.json().msg).to.equal("login success!");
});

// 响应结果的长度
pm.test("response token_type length must to be 6", function(){
    pm.expect(pm.response.json().token_type).to.lengthOf(6);
})

// 响应结果必须包含值的部分
pm.test("response must to be token", function(){
    pm.expect(pm.response.text()).to.include("bear");
})

3、校验返回状态码是200

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

4、校验 Content-Type 在返回头部

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

5、校验返回的头部Content-Type 值为 application/json;charset=UTF-8

pm.test("Content-Type header is application/json;charset=UTF-8",function(){
    pm.expect(pm.response.headers.get("Content-Type")).to.eql("application/json;charset=UTF-8");
})

6、接口返回的json数据又有这个账号名称,想断言结果返回的值和变量username相等QQ截图20230502202507

pm.test("Response property matches environment variable", function () {
  pm.expect(pm.response.json().username).to.eql(pm.environment.get("username"));
});