断言的使用

何时需要使用断言

1.可以在预计正常情况下程序不会到达的地方放置断言:ASSERT( FALSE );
2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
3.使用断言测试方法执行的前置条件和后置条件
4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)


什么地方不要使用断言

断言语句不是永远会执行,可以屏蔽也可以启用
因此:
1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

 

ASSERT()是干什么用的

  ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
    ......
    ASSERT( n != 0);
    k = 10/ n;
    ......
    ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
    assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。

在 Postman 中,断言(Assertions)用于验证接口的响应是否符合预期,是接口测试中非常关键的一部分。通过断言,可以判断测试是否通过,从而确保接口的正确性和稳定性。 ### 编写和使用断言的方式 断言主要在 Postman 的 **Tests** 标签页中编写。Tests 标签位于请求编辑界面的底部,支持使用 JavaScript 编写脚本,用于对响应结果进行验证。 #### 1. 常见的断言方式 ##### (1)响应状态码断言 验证接口返回的状态码是否符合预期,例如判断是否为 200(成功)或 201(资源已创建)等。 ```javascript pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); ``` 也可以使用另一种写法: ```javascript tests["Status code is 200"] = responseCode.code == 200; ```[^2] ##### (2)响应内容断言 如果接口返回的是 JSON 数据,可以通过解析响应内容,并对特定字段进行断言。 例如,验证 JSON 响应中的 `message` 字段是否为 `"操作成功!"`: ```javascript var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql("操作成功!"); ```[^3] 注意:字符串值需要用双引号括起来,且感叹号等符号不可省略。 如果验证布尔类型的字段,例如 `success` 是否为 `true`: ```javascript var jsonData = pm.response.json(); pm.expect(jsonData.success).to.eql(true); ``` 注意:布尔值不需要引号,否则会被视为字符串类型,导致断言失败。 ##### (3)响应头断言 验证响应头中是否包含某个字段,例如 `Content-Type` 是否存在。 ```javascript tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); ``` 此方法会返回指定的响应头值,如果不存在则返回 `undefined`[^4]。 ##### (4)状态码范围断言需要判断响应码是否在多个可接受的范围内,例如 201 或 202 都被视为成功: ```javascript pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201, 202]); }); ```[^5] #### 2. 使用断言的最佳实践 - **组织多个断言**:可以在一个 `pm.test` 块中编写多个断言,便于统一管理测试逻辑。 - **使用变量提取响应数据**:通过 `pm.response.json()` 获取响应内容,并将其存储在变量中,便于后续断言使用。 - **结合环境变量**:可以将断言结果存储在环境变量中,用于后续请求的条件判断。 --- ### 示例:完整的断言脚本 以下是一个包含多个断言的完整示例,验证状态码、响应头和响应内容: ```javascript pm.test("Verify API response", function () { // 验证状态码是否为 200 pm.response.to.have.status(200); // 验证响应头中是否包含 Content-Type pm.expect(postman.getResponseHeader("Content-Type")).to.include("application/json"); // 解析响应内容为 JSON var jsonData = pm.response.json(); // 验证 message 字段是否为 "操作成功!" pm.expect(jsonData.message).to.eql("操作成功!"); // 验证 success 字段是否为 true pm.expect(jsonData.success).to.eql(true); }); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值