Postman常用前后置脚本语句及断言编写

一、获取当前时间戳写入全局变量(在Tests(前置)下/Pre-request Script(后置)编写)

//获取当前时间戳

let timestamp = (new Date()).getTime().toString();

//取13位时间戳

timestamp = timestamp.substr(0,13);

//console.log(timestamp)

//设置时间戳为全局变量

pm.globals.set("timestamp", timestamp);

//console.log("将时间戳写入全局变量(globals)成功,当前变量值为:" + timestamp);

//设置时间戳为局部变量

pm.environment.set("timestamp", timestamp);

//console.log("写入全局变量成功,timestamp值为" + pm.environment.get("timestamp"))

二、脚本常用语句 

1、设置环境变量
pm.environment.set("variable_key", "variable_value");

2、将嵌套对象设置为环境变量
var array = [1, 2, 3, 4];
pm.environment.set("array", JSON.stringify(array, null, 2));

var obj = { a: [1, 2, 3, 4], b: { c: 'val' } };
pm.environment.set("obj", JSON.stringify(obj));

3、获取环境变量
pm.environment.get("variable_key");

4、获取环境变量(其值是字符串化对象)
// These statements should be wrapped in a try-catch block if the data is coming from an unknown source.

var array = JSON.parse(pm.environment.get("array"));
var obj = JSON.parse(pm.environment.get("obj"));

5、清除环境变量
pm.environment.unset("variable_key");

6、设置全局变量
pm.globals.set("variable_key", "variable_value");

7、获取全局变量
pm.globals.get("variable_key");

8、清除全局变量
pm.globals.unset("variable_key");

9、得到一个变量
此函数在全局变量和活动环境中搜索变量。
pm.variables.get("variable_key");

10、检查响应主体是否包含字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

11、检查响应主体是否等于字符串
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

12、检查JSON值
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

13、内容类型存在
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

14、响应时间小于200毫秒
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

15、状态代码是200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

16、代码名称包含一个字符串
pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

17、成功的POST请求状态代码
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

18、打印返回的数据
console.log(responseBody);

三、接口关联、postman内置动态参数以及自定义的动态参数、Postman断言

环境变量:本质就是全局变量,作用用于设置环境

全局变量:能够在任何接口都能访问的变量

获取环境变量和全局变量的值通过:{{变量名}}

1、接口关联 

1.使用json提取器实现接口关联

get接口请求:

console.log(responseBody);//打印返回的数据

//使用json提取器提取返回数据的值

//把返回的字符串格式的数据转成对象形式

var result = JSON.parse(responseBody);

console.log(result.x)//x为数据key

//把数据值设置为全局变量

pm.globals.set("x",result.x);//"x"为变量名称

post接口参数: {{x}}

实例:

2.使用正则表达式提取器实现接口关联

get接口:

//使用正则表达式提取器实现接口关联,match匹配。 responseBody.match(new.RegExp('"x""(.*?)"'));//“x”为想要值左侧全部内容,“(.*?)”为正则匹配值

console.log(result[y]);//y为输出数组目标值的位置

//设置全局变量

pm.globals.set("m",result[y]);//m为变量名称

post接口参数:

{{m}}

2、postman内置动态参数以及自定义的动态参数

postman内置动态参数:

{{$timestamp}}:生成当前时间的时间戳

{{$randomInt}}:生成1-1000之间随机数(可能会重复)

{{$guid}}:生成随机的GUID的字符串

自定义动态参数:

接口获取前脚本:

//手动获得时间戳

var times = Date.now();

//设置为全局变量

pm.globals.set{"times",times};

使用时:{{times}}

3、postman断言

1、常规六种断言:
status code:code is 200 检查返回的状态码是否为200
//状态断言
pm.test(“检查返回状态为200”,function(){
    pm.response.to.have.status(200);
})

response body contains sting 检查响应中包括指定字符串
//业务断言
pm.test(“检查包含字符串x”,function(){
    pm.expect(pm.response.text()).to.include(“x”)
});

response body json value check 检查响应中其中json的值
//业务断言
pm.test(“检查x的值为y”,function(){
    Var jsonData = pm.response.json();
    pm.expect(jsonData.x).to.eql(y); //x为返回数据,y为数据的值
});

response body:is equal to a string 检查响应等于一个字符串
//业务断言
pm.test(“检查响应数据为一个x”,function(){
    pm.response.to.have.body(“x”);
});

response headers:content-type 检查是否包含响应头content-type
pm.test(“检查响应头包含content-type”,function(){
    pm.response.to.have.header(“content-type”);
})

 response time is less than 200ms 检查请求耗时小于200ms
pm.test(“检查接口响应时间少于200ms”,function(){
    pm.expect(pm.response.responseTime).to.be.below(200);
})

2、自定义动态参数(全局变量)断言的方式:
Pm.globals.get("x")
Pm.test(“检查响应中包含标签名”,function(){
    Pm.expect(pm.response.text()).to.include(“文本”+pm.globals.get("x"));//x为全局变量
});

globals{"x"}
Pm.test(“检查响应中包含标签名”,function(){
    Pm.expect(pm.response.text()).to.include(“文本”+globals{“x”});//x为全局变量
});

globals.x
Pm.test(“检查响应中包含标签名”,function(){
    Pm.expect(pm.response.text()).to.include(“文本”+globals.x);//x为全局变量
});

3、全局断言:
项目->edit->tests->将全局使用的断言放进去-> 其他业务接口只需要做业务断言即可
例如:将全局使用的状态断言放进全局断言内,其他
//状态断言
pm.test(“检查返回状态为200”,function(){
    pm.response.to.have.status(200);
})

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在使用Postman进行接口测试时,我们可以通过断言(assertions)来验证响应结果是否符合预期。Postman的测试脚本支持多种类型的断言常用的有以下几种: 1. 状态码断言:通过验证HTTP响应的状态码来判断请求是否成功。例如,断言状态码为200表示请求成功。 ```javascript pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); ``` 2. 响应时间断言:通过验证HTTP响应的时间来判断请求是否超时或响应过慢。例如,断言响应时间小于100ms表示响应速度较快。 ```javascript pm.test("Response time is less than 100ms", function () { pm.expect(pm.response.responseTime).to.be.below(100); }); ``` 3. 响应头断言:通过验证HTTP响应的头部信息来判断请求是否成功或返回的数据类型是否正确。例如,断言响应头部包含Content-Type为application/json表示返回的数据为JSON格式。 ```javascript pm.test("Content-Type is application/json", function () { pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json"); }); ``` 4. 响应体断言:通过验证HTTP响应的主体内容来判断请求是否成功或返回的数据是否符合预期。例如,断言响应体中包含特定的关键字或值。 ```javascript pm.test("Response body has expected key", function () { var responseBody = pm.response.json(); pm.expect(responseBody).to.have.property("key").that.equals("value"); }); ``` 以上是常用的几种断言方式,可以根据具体的测试需求选择合适的断言方式。在编写测试脚本时,需要注意的是断言语句的正确性和覆盖面,以保证测试结果的准确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试小liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值