Postman深入学习之Test测试与断言Assert,还能设置环境变量

本文详细介绍了如何在Postman中使用断言进行API测试,包括状态行、响应头及响应体等多种类型的断言示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是断言

做过测试的同学,都知道断言。如果结果和预期一致,则用例通过;如果不一致,则断言失败,用例失败。
有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的 ,甚至强大到可以用postman来做一个api collection test,就是整个API合集的测试,看下项目是否regression test成功,诸如此类。

Postman中断言

  • 断言编写位置:Tests标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行 。
  • 断言执行结果查看:Test Results

那如果不会写怎么办 ?不用担心,因为postman已经给我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块 。

在这里插入图片描述
常用断言

接下来就让我们了解一些常用断言,还是按响应的组成来划分,分别是状态行,响应头,响应体。

状态行中又包括状态码状态消息 。在postman也可以对这两个进行断言

状态行中的断言:

断言状态码:Status code: code is 200

pm.test("Status code is 200", function () {  
    pm.response.to.have.status(200); //这里填写的200是预期结果,实际结果是请求返回结果  
});

断言状态消息:Status code:code name has string

pm.test("Status code name has string", function () {  
    pm.response.to.have.status("OK"); //断言响应状态消息包含OK  
});
响应头中的断言

断言响应头中包含:Response headers:Content-Type header check

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

断言响应体中包含XXX字符串:Response body:Contains string

pm.test("Body matches string", function () {  
	//by zhengkai.blog.csdn.net
	//pm.expect(pm.response.text()).to.include("string") 获取响应文本中包含string
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");  
});

断言响应体等于XXX字符串:Response body : is equal to a string

pm.test("Body is correct", function () {  
	//pm.response.to.have.body("response_body_string"); 获取响应体等于response_body_string
    pm.response.to.have.body("response_body_string");  
});

断言响应体(json)中某个键名对应的值:Response body : JSON value check

pm.test("Your test name", function () {  
	//var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错  
	//pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100进行比较
	//by zhengkai.blog.csdn.net
    var jsonData = pm.response.json();  
    pm.expect(jsonData.value).to.eql(100);  
});
响应时间(一般用于性能测试)

断言响应时间:Response time is less than 200ms

pm.test("Response time is less than 200ms", function () {  
	//断言响应时间<200ms  
    pm.expect(pm.response.responseTime).to.be.below(200); 
});

动手实践

1. 例如 https://postman-echo.com/delay/3 官方测试接口中返回
{
    "delay": "3"
}

在这里插入图片描述
通过判断 pm.expect(jsonData.delay).to.eql("3"); 来判断是否返回对应的报文

pm.test("delay=3", function () {  
	//var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错  
	//pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100进行比较
	//by zhengkai.blog.csdn.net
    var jsonData = pm.response.json();  
    pm.expect(jsonData.delay).to.eql("3");  
});
pm.test("Response time is less than 200ms", function () {  
	//断言响应时间<200ms  
    pm.expect(pm.response.responseTime).to.be.below(200); 
});
2. 直接在postman中debug变量

别忘了这是一个IDE,也是一个JavaScript环境,那么console.log将非常适合用来debug各种变量
在这里插入图片描述

3.判断接口返回内容

例如https://postman-echo.com/deflate 接口中返回

{
    "deflated": true,
    "headers": {
        "x-forwarded-proto": "https",
        "x-forwarded-port": "443",
        "host": "postman-echo.com",
        "x-amzn-trace-id": "Root=1-6145f3e0-31f175e96cb3a516223d1a97",
        "user-agent": "PostmanRuntime/7.28.4",
        "accept": "*/*",
        "postman-token": "6ba52af7-042b-4ae9-9389-bf26dd12cb5b",
        "accept-encoding": "gzip, deflate, br",
        "cookie": "sails.sid=s%3AALaKDmjvuKFzUmhfPaq9Oj01WO5qYrfs.k6s4kF%2B9OO%2FE3CWP9EuO%2FMVbgM8I6g5iNbQWtzpgdb8"
    },
    "method": "GET"
}
tests["response code is 200"] = responseCode.code === 200;

try {
    var data = JSON.parse(responseBody);
    var jsonData = pm.response.json();
    tests["Body contains deflated"] = responseBody.has("deflated");
    tests["Body contains headers"] = responseBody.has("headers");
    tests["Body contains method"] = responseBody.has("method");
    tests["host includes postman-echo.com"] =  pm.expect(jsonData.headers.host).to.include("postman-echo.com");
}
catch(e) {
    console.log('Cannot parse response,probably not a JSON');
}

在这里插入图片描述

4. 设置环境变量
//by zhengkai.blog.csdn.net
var id = pm.variables.get("id");
console.log(id);

console.log("after");
var jsonData = pm.response.json();
id =  jsonData.headers["postman-token"] ;

console.log(id)

pm.environment.set("id",id)

console.log(id);

这样就可以很方便设置环境变量了,对于需要获取token再设置到另一个api中以变量{{token}}的方式来说,会变得非常方便。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值