5年程序员问我:什么是断言?

简介: 5年程序员问我:什么是断言?

响应以及断言

在“发送HTTP请求”一讲中,我们讲解了APIPOST中响应数据的查看。

API 请求响应

点击发送按钮后,如果有数据返回,则会显示返回数据,响应时间,响应码,Cookie等。

注意:返回数据默认是 ==美化== 模式,便于查看 JSON XML 格式。您可以通过切换 ==原生== 或 ==预览== 模式 查看其它类型的类型。

返回Headers

除了查看结果外,ApiPost也提供了强大的测试校验功能。在这里我们也可以使用断言来进行响应结果的校验。

响应结果分屏展示

在APIPOST 5.4版本后,支持“响应结果分屏展示”,从而提升工作区的空间。

image.png

image.png

什么是断言?

协作开发,版本升级,服务器升级,接口返回有可能因为一些bug,和我们预期结果不一致。为了便于开发&测试人员能够更快的发现bug,有利于整个产品质量以及进度的保证。我们推出断言功能。

如何使用断言?

  1. 定义测试用例
  2. 验证测试用例

例如接口返回:

{
    "errcode": 0,
    "errstr": "success",
    "post": [],
    "get": [],
    "request": [],
    "put": "",
    "header": {
        "Host": "echo.apipost.cn",
        "Connection": "keep-alive",
        "Content-Length": "0",
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN",
        "Content-Type": "application/json",
        "Cookie": "PHPSESSID=n3k73k06o6ghnie4e9re4rbf0t",
        "Origin": "https://echo.apipost.cn",
        "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
    }
}

定义测试用例:

apt.assert('response.raw.status==200');
apt.assert('response.raw.type=="json"');
apt.assert('response.json.errcode==0');
apt.assert('response.raw.responseTime<100');
apt.assert('response.json.header.Host=="echo.apipost.cn"');

点击发送按钮后:

绿色表示测试通过,红色表示测试不通过。

特别注意:==每个测试用例是一行,不能换行。==

例:apt.assert('response.json.header.Host=="echo.apipost.cn"');

1)response.json.header.Host 表示响应json下面的header数组中的Host字段,
2)必须都为1,才会通过。

常见的测试用例可以通过后执行脚本获取:

更多响应参数变量

response.raw:原始响应数据

调用示例:

response.raw.status //响应状态码(200、301、404等)
response.raw.responseTime //响应时间(毫秒)
response.raw.type //响应类型(json等)
response.raw.responseText //响应文本

response.json:json格式的响应数据

调用示例如上面示例:

response.json.data.token //也可以 response.json.data["token"]

response.headers:响应头

调用示例:

response.headers.server //也可以 response.headers["server"]

response.cookies :响应cookie

调用示例:

response.cookies.PHPSESSION //也可以 response.cookies["PHPSESSION"]

常用断言表达式

1、检查response body中是否包含某个string

apt.assert('response.raw.responseText=="test"');  // 检查响应文本是否等于test字符串 
apt.assert('response.raw.responseText.indexOf("test") > -1');  // 检查响应文本是否含有test字符串

2、检测返回JSON中的某个值是否等于预期的值

apt.assert('response.json.hasOwnProperty("errcode")'); // 检测返回json对象的是否含有errcode字段
apt.assert('response.json.errcode=="success"');  // 检测返回json对象的errcode字段是否等于success字符串
apt.assert('response.json.errcode.indexOf("success") > -1');  // 检测返回json对象的errcode字段是否含有success字符串
apt.assert('response.json.errcode!="success"');  // 检测返回json对象的errcode字段是否不等于success字符串
apt.assert('response.json.errcode>=1');  // 检测返回json对象的errcode字段是否大于1
apt.assert('response.json.errcode==null'); // 检测返回json对象的errcode字段是否是null

3、测试response Headers中的某个元素是否存在(如:Content-Type)

apt.assert('response.headers.hasOwnProperty("content-type")');

4、验证Status code(响应码)的值是不是等于200

apt.assert('response.raw.status==200');

5、验证Response time(请求耗时)是否大于某个值

apt.assert('response.raw.responseTime>=100');

6、验证返回类型是不是json

apt.assert('response.raw.type=="json"');
相关文章
|
4月前
|
测试技术 C语言 开发者
【C语言】assert断言:保护程序的利器
【C语言】assert断言:保护程序的利器
52 0
|
4月前
|
程序员 编译器 C++
【实用编程技巧】不想改bug?初学者必须学会使用的报错函数assert!(断言函数详解)
【实用编程技巧】不想改bug?初学者必须学会使用的报错函数assert!(断言函数详解)
56 2
|
25天前
一文搞懂正则表达式之零宽断言
零宽断言: 用于查找在某些内容之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。
44 0
一文搞懂正则表达式之零宽断言
|
1月前
|
Java 数据库连接 开发者
断言+异常处理类:让代码更简洁、更健壮
【8月更文挑战第10天】在软件开发过程中,确保代码的正确性和健壮性是非常重要的。其中,断言(Assertions)和异常处理(Exception Handling)是两种不可或缺的工具,它们能够帮助我们提前发现错误、减少运行时错误,并使得代码更加易于理解和维护。本文将探讨如何通过巧妙地结合断言和自定义异常处理类,使代码更加简洁、清晰且健壮。2
50 7
|
3月前
|
程序员 编译器 C语言
C语言中的assert.h:调试助手与断言详解
C语言中的assert.h:调试助手与断言详解
|
4月前
cypress如何写断言?
cypress如何写断言?
|
4月前
|
Java Spring
gataway断言源码剖析
gataway断言源码剖析
|
测试技术
测试中进行断言是什么意思?底层原理是什么?
测试中进行断言是什么意思?底层原理是什么?
1249 0
|
测试技术
自动化测试教程(15)数据断言
(4)通过比对页面元素的属性信息,检查测试用例执行结果的正确性,编写代码如下:FindElement().get_attribute(“value”)断言以后用的非常多,他可以判断我们程序是否正确,也可以判断数据驱动后结果是否正确,也可以判断内容是否正确,用处很多,需要熟练掌握。(1)通过比对页面元素的文本信息,检查测试用例执行结果的正确性,编写代码如下:Find_element().text。(3)通过对比网址信息,检查测试用例执行结果的正确性,编写代码如下:Driver.current_url。
自动化测试教程(15)数据断言
|
Go C语言
嵌入式C语言基础之断言
嵌入式C语言基础之断言
120 0