断言的使用

何时需要使用断言

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 断言使用教程 在Postman中,断言是一种验证HTTP请求响应是否符合预期的重要机制。它可以通过多种方式实现对状态码、响应头、响应体等内容的校验。 #### 基础概念 断言的核心在于利用`Tests`选项卡中的JavaScript脚本来定义期望的行为[^2]。这些脚本允许开发者编写逻辑以检查API响应的各项属性是否满足特定条件。 #### 状态码断言 为了确认服务器返回的状态码是否正确,可以在`Tests`部分加入如下代码: ```javascript pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); ``` 上述代码创建了一个名为“Status code is 200”的测试项,并确保接收到的响应具有指定的成功状态码200[^4]。 #### 响应断言 除了检验状态码外,还可以评估服务性能,比如限定最大可接受的响应间为200毫秒以内: ```javascript pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); }); ``` 此段落展示了如何测量并约束API调用所需的间长度。 #### 响应头部信息断言 当需要核实某些特定的Header字段是否存在或者其值是否恰当的候,则可以采用下面的方法: ```javascript pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); pm.test("Verify Content-Type value", function () { pm.expect(pm.response.headers.get("Content-Type")).to.eql("application/json; charset=utf-8"); }); ``` 这两行分别检测是否有`Content-Type`这个header存在以及它的实际取值是不是等于预设的标准形式。 #### JSON Body断言 如果目标是对JSON格式的数据结构做深入分析的话,那么借助chai库里的`.property()`方法将会非常方便实用: ```javascript pm.test("Body has correct structure and values", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.eql(1); pm.expect(jsonData.name).to.eql('example'); }); ``` 这段程序先解析整个json对象再逐一比较各个成员变量的内容是否匹配给定样本。 #### 动态环境变量应用 另外值得注意的是,在复杂的场景下可能还会涉及到跨多个请求共享同一套参数的情况。此就可以考虑引入全局/局部级别的environment variables来简化管理流程[^3]。例如设置默认URL地址为模板字符串表达式的形式:`https://{{base_url}}/endpoint`. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值