JSON断言:服务器返回JSON格式数据时判断测试结果的好选择

JSON断言

JSON断言:服务器返回JSON格式数据时判断测试结果的好选择

若服务器返回的ResponseBody是JSON格式的数据 此时使用JSON断言判断测试结果 这是较好的选择

首先要依据JSON Path从返回的JSON数据里提取需判断的实际结果。接着设置预期结果。最后将两者进行比较从而得出断言结果。

下面首先介绍JSON与JSON Path相关的基础知识。

一、JSON与JSONPath

什么是JSON

JSON是一种数据交换格式。它被称作JavaScript对象表示法。这种格式是轻量级的。

JSON易于理解。它便于阅读。它便于编写。同时计算机易于对其进行解析。计算机易于对其进行生成。所以JSON有广泛应用。

JSON基于如下两种结构:

1.名称/值对的集合

在各种语言里 这能够当作对象来实现 也能够当作记录来实现 还能够当作结构来实现 又能够当作字典来实现 也能当作哈希表来实现 还能当作键控列表来实现 或者当作关联数组来实现

2.值的有序列表

在多数语言里 这通过数组形式实现 也通过向量形式实现 还通过列表形式实现 又通过序列形式实现

JSON用于描述文本数据结构,有如下形式:

1.对象(object)

对象是一组没有顺序的名称与值对。对象从{(左大括号)起始,到}(右大括号)结束。每个名称后面跟着冒号。名称与值对之间用逗号隔开。

比如:

{"姓名":"张三","性别":"男","年龄":"25岁"}

2.数组(Array)

数组是值的有序集合 数组开始于左中括号 数组结束于右中括号 值之间用逗号分隔

比如:

{
年龄是21岁。
姓名为李四,性别为女,年龄18岁
你提供的内容似乎并不是一个完整的句子,不太明确具体需求,请你检查或补充完整准确的内容以便我进行改写。
}

3.值(value)

值能够是字符串。值能够是数字。值能够是true/false。值能够是null。值能够是对象。值能够是数组。

4.字符串(string)

字符串是一种序列。它由零个或多个Unicode字符组成。它用双引号括起来。它使用反斜杠转义。

字符表现为单个的字符串。该字符串与C或Java里的字符串极为相像。

5.数字(number)

一系列由0到9组成的数字组合。可为负数或者小数。还能用e或E表示成指数形式。数字很像C或Java数字。只是不采用八进制和十六进制格式

6.空白符(whitespace)

请你提供一下具体的句子内容,以便我按照要求进行改写。

什么是JSONPath

我们常常运用XPath去分析、转换并选择性地从XML文档里提取数据。和XPath相似,JOSNPath能够便捷地从JSON结构中找出并提取数据。

JSONPath里的“根成员对象”一直被称作$。不管它是对象还是数组。JSONPath表达式存在两种不同表示风格。一种是“dot–notation”(.号)。另一种是“bracket–notation”([]号)

例如,

$.store.book[0].title or
['商店']['书籍'][0]['标题']

JSONPath语法元素

JSONPath实例

{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
世纪名言
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
标题:《指环王》
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}

二、JSON 断言

JSON断言可以对服务器返回的JSON文档进行验证。

JSON断言有两种使用模式:

1.根据JSONPath能否在JSON文档中找到路径;

2.根据JSONPath提取值并对值进行验证。

若文档格式为非JSON则断言失败;

若找不到路径断言失败;

若提取值与预期值不一致断言失败。

配置项

Assert JSON Path exists:

用于断言的JSON元素的路径(JSONPath)。

1.Additionally assert value

是否额外验证根据JSONPath提取的值。

不勾选,验证JSONPath能否在JSON文档中找到路径;

勾选,验证根据JSONPath提取值是否预期。

2.Match as regular expression

预期值是否可以使用正则表达式。

不勾选,预期值不能使用正则表达式表示;

勾选,预期值可以使用正则表达式表示。

Expected Value:

预期值。

1.Expect null

若验证提取的值为null,则勾选此项。

这里有两个地方需要额外注意:

验证null值时,仍需勾选“Additionally assert value”。不然的话,验证的便是JSONPath能否找到路径。

b.预期值不填表示空字符,与null不等价。

反转断言(如果满足上述条件将会失败)

若勾选,表示对断言结果取反。

注意:

需要设置为[]

三、应用案例

这里仍以查询被购买商品的总金额接口为例讲述JSON断言的用法该接口前面已介绍过

该接口返回的响应数据为JSON,故可以使用JSON断言。

操作步骤

1.对预期结果要验证的项进行参数化

这里验证err_msg,result

将预期结果写入csv文件中

比如:

案例名称,商品编号,商品属性,商品数量,错误信息,结果

case1,9,226,3,,¥6630元

没有找到指定商品。没有找到指定商品属性。

case3,9,,1,,¥2298元

case4,9,226,,¥2308元

2.添加JSON Assertion并进行配置

JSON断言一次仅能断言一个参数。所以在此处要添加多个JSON断言。

假设对错误消息与商品金额这个两个返回参数值做断言。

{
“错误信息”为:未找到指定商品。且未找到指定商品属性。
"result": "",
"qty": 1,
"err_no": 1
}
$.err_msg显示 没有找到指定的商品 或者 没有找到指定的商品属性
$.qty --> 1

JSON断言配置

1. 断言错误消息:

2. 断言商品金额:

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

88阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读