欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > JMeter 接口关联方法及示例

JMeter 接口关联方法及示例

2025/4/7 22:57:37 来源:https://blog.csdn.net/m0_65026326/article/details/145963662  浏览:    关键词:JMeter 接口关联方法及示例

JMeter 接口关联方法及示例

在 JMeter 中进行接口测试时,接口关联是非常重要的操作,它可以确保多个接口之间的数据传递和业务逻辑的连贯性。除了正则表达式提取器,还有多种方法可以实现接口关联,下面将详细介绍这些方法并给出实际例子,同时也会介绍使用用户自定义变量进行接口关联的例子。

一、JSON 提取器

适用场景

当接口响应数据为标准的 JSON 格式时,使用 JSON 提取器可以方便、准确地提取所需的数据。

示例

假设我们有一个用户信息查询接口,响应数据如下:

{"user": {"id": 123,"name": "John Doe","email": "johndoe@example.com"}
}

我们需要提取用户的 id 用于后续的订单查询接口。

配置步骤

  1. 在用户信息查询接口下添加“后置处理器” -> “JSON 提取器”。
  2. 配置 JSON 提取器:
    • 名称:设置为 userId
    • JSON 路径表达式:填写 $.user.id
    • 匹配数字:设置为 1
    • 缺省值:可以留空。

使用示例

在后续的订单查询接口中,将 userId 作为参数传递:

  • 请求路径/orders?userId=${userId}

二、XPath 提取器

适用场景

当接口响应数据是 XML 格式时,XPath 提取器可以根据 XPath 表达式从 XML 文档中提取特定的节点值。

示例

假设我们有一个商品列表接口,响应数据如下:

<products><product><id>456</id><name>Smartphone</name><price>999</price></product>
</products>

我们需要提取商品的 id 用于后续的商品详情查询接口。

配置步骤

  1. 在商品列表接口下添加“后置处理器” -> “XPath 提取器”。
  2. 配置 XPath 提取器:
    • 名称:设置为 productId
    • XPath 查询:填写 //product/id
    • 结果类型:选择 STRING
    • 匹配数字:设置为 1
    • 缺省值:可以留空。

使用示例

在后续的商品详情查询接口中,将 productId 作为参数传递:

  • 请求路径/products/${productId}

三、CSS/JQuery 提取器

适用场景

当接口响应为 HTML 页面,需要从 HTML 元素中提取数据时,CSS/JQuery 提取器可以使用 CSS 选择器或 JQuery 语法定位元素并提取数据。

示例

假设我们有一个新闻列表页面,HTML 代码如下:

<!DOCTYPE html>
<html>
<body><h1 class="news-title">Breaking News: New Policy Announced</h1>
</body>
</html>

我们需要提取新闻标题用于后续的分享接口。

配置步骤

  1. 在新闻列表接口下添加“后置处理器” -> “CSS/JQuery 提取器”。
  2. 配置 CSS/JQuery 提取器:
    • 引用名称:设置为 newsTitle
    • CSS/JQuery 表达式:填写 .news-title
    • Attribute:留空,表示提取元素的文本内容。
    • 匹配数字:设置为 1
    • 缺省值:可以留空。

使用示例

在后续的分享接口中,将 newsTitle 作为参数传递:

  • 请求参数title=${newsTitle}

四、BeanShell 后置处理器

适用场景

对于复杂的数据处理和关联逻辑,正则表达式、JSON 提取器等可能无法满足需求,此时可以使用 BeanShell 后置处理器,通过编写 Java 代码进行灵活的数据提取和处理。

示例

假设我们有一个订单接口,响应数据如下:

{"order": {"id": 789,"totalAmount": 199.99,"items": [{"name": "Laptop","price": 149.99},{"name": "Mouse","price": 49.99}]}
}

我们需要提取订单中第一个商品的名称用于后续的评价接口。

配置步骤

  1. 在订单接口下添加“后置处理器” -> “BeanShell 后置处理器”。
  2. 在 BeanShell 后置处理器的“脚本”框中编写以下代码:
import org.json.JSONObject;
import org.json.JSONArray;String response = prev.getResponseDataAsString();
JSONObject json = new JSONObject(response);
JSONObject order = json.getJSONObject("order");
JSONArray items = order.getJSONArray("items");
JSONObject firstItem = items.getJSONObject(0);
String itemName = firstItem.getString("name");
vars.put("firstItemName", itemName);

使用示例

在后续的评价接口中,将 firstItemName 作为参数传递:

  • 请求参数productName=${firstItemName}

五、JSR223 后置处理器

适用场景

JSR223 后置处理器与 BeanShell 后置处理器类似,但支持多种脚本语言,如 Groovy、JavaScript 等,在性能和功能上更具优势。

示例

同样使用上述订单接口的响应数据,我们使用 Groovy 脚本提取订单的总金额用于后续的支付接口。

配置步骤

  1. 在订单接口下添加“后置处理器” -> “JSR223 后置处理器”。
  2. 在 JSR223 后置处理器的“语言”下拉框中选择 Groovy
  3. 在“脚本”框中编写以下代码:
import groovy.json.JsonSlurperdef response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)
def totalAmount = json.order.totalAmount
vars.put("orderTotalAmount", totalAmount.toString())

使用示例

在后续的支付接口中,将 orderTotalAmount 作为参数传递:

  • 请求参数amount=${orderTotalAmount}

六、用户自定义变量进行接口关联

适用场景

在某些情况下,我们可能需要手动设置一些变量,并在多个接口中使用这些变量进行关联。

示例

假设我们要测试一个用户注册和登录的流程,需要手动设置用户名和密码,然后在注册和登录接口中使用这些信息。

配置步骤

  1. 在测试计划中添加“配置元件” -> “用户定义的变量”。
  2. 配置用户定义的变量:
    • 名称:分别设置为 usernamepassword
    • :填写具体的用户名和密码,例如 testusertestpassword

使用示例

  • 注册接口
    • 请求参数username=${username}&password=${password}
  • 登录接口
    • 请求参数username=${username}&password=${password}

通过以上这些方法,我们可以在 JMeter 中灵活地实现接口关联,确保测试用例能够准确地模拟真实的业务场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词