MeterSphere接口自动化系列之JSONPath常用提取方式

本文介绍了如何使用JsonPath在接口返回的JSON数据结构中,通过逐级节点获取、相对路径访问、模糊匹配和多条件组合筛选,提取所需的信息,例如cart中的id、items数组的name等。

一、使用场景

        针对接口返回结果,提取相应的信息,用于后续接口输入或用于执行结果断言,对应平

台的后置操作、断言规则页签。

        

二、常用方式实例

接口返回结果

{
    "code": 0,
    "data": {
        "cart": {

            "id": "342536277542256634",
            "items": [
				{
					"name":"测试名称1",
					"item_id":"3356",
					"item_desc":"花花世界",
					"price":2000
				},
				{
					"name":"测试名称2",
					"item_id":"1987",
					"item_desc":"大千世界无奇不有",
					"price":1000
				},
				{
					"name":"测试名称3",
					"item_id":"7642",
					"item_desc":"元宇宙世界",
					"price":3000
				},
				{
					"name":"新奇大陆",
					"item_id":"1000",
					"item_desc":"元宇宙世界",
					"price":5000
				}
                
            ],
            "itemsCount": 0,
            "joinOrderStat
提供的参考引用中未提及Metersphere接口自动化提取多个参数值的方法。一般来说,在Metersphere接口自动化测试里,可借助以下常见方法提取多个参数值: ### JSON提取器 若响应内容是JSON格式,可使用JSON提取器来提取多个参数值。在Metersphere接口测试步骤里添加JSON提取器,设置JSON路径表达式以匹配要提取的参数。例如,响应内容如下: ```json { "user": { "name": "John", "age": 30, "email": "john@example.com" }, "address": { "city": "New York", "street": "123 Main St" } } ``` 若要提取`name`、`age`和`city`,可设置JSON路径表达式分别为`$.user.name`、`$.user.age`和`$.address.city`。 ### 正则表达式提取器 当响应内容为非JSON格式(如HTML、纯文本)时,可使用正则表达式提取器。在Metersphere接口测试步骤中添加正则表达式提取器,设置正则表达式来匹配要提取的参数。例如,响应内容为: ``` User: John, Age: 30, City: New York ``` 若要提取`John`、`30`和`New York`,可设置正则表达式分别为`User: (.*), Age`、`Age: (.*), City`和`City: (.*)`。 ### XPath提取器 如果响应内容是XML或HTML格式,还能使用XPath提取器。在Metersphere接口测试步骤中添加XPath提取器,设置XPath表达式来匹配要提取的参数。例如,响应内容为: ```xml <user> <name>John</name> <age>30</age> <address> <city>New York</city> </address> </user> ``` 若要提取`name`、`age`和`city`,可设置XPath表达式分别为`//user/name`、`//user/age`和`//user/address/city`。 ### 代码提取Metersphere里可使用脚本(如Groovy、JavaScript)来提取多个参数值。在接口测试步骤中添加后置脚本,编写代码来解析响应内容并提取所需参数。例如,使用Groovy脚本提取JSON响应中的参数: ```groovy import groovy.json.JsonSlurper def jsonSlurper = new JsonSlurper() def response = sampler.getResponseDataAsString() def json = jsonSlurper.parseText(response) def name = json.user.name def age = json.user.age def city = json.address.city vars.put("name", name) vars.put("age", age) vars.put("city", city) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值