You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LoadRunner REST API脚本求助:JSON数据参数化问题

参数化LoadRunner中web_custom_request的JSON请求体

我来帮你搞定LoadRunner里REST API脚本的JSON参数化问题,这在接口测试中是很常见的需求,咱们一步步拆解来做:

1. 先明确需要参数化的动态字段

先梳理你原JSON里需要从外部获取的变量:

  • contextObjectId(和payload里的os_st_id看起来是同一值,可复用参数)
  • LastName、FirstName(用户搜索条件)
  • serviceOpInvocationId(调用ID)
  • sessionId(动态会话ID,通常从前置接口响应中提取)

2. 方式一:用参数文件管理批量测试数据

如果是静态测试数据(比如多组用户搜索条件),可以用LoadRunner的参数文件来管理:

  1. 创建一个.dat格式的参数文件,比如api_test_data.dat,内容如下:
contextObjectId,LastName,FirstName,serviceOpInvocationId
36045467715,test,test,1111111
36045467716,smith,john,2222222
36045467717,doe,jane,3333333
  1. 在LoadRunner脚本中导入参数:点击脚本界面的【Parameters】按钮,添加对应参数,选择文件类型,指向你创建的.dat文件,设置迭代方式(比如每次迭代取一行数据)。

3. 方式二:关联提取动态值(比如SessionID)

如果sessionId是从前置接口(比如登录接口)的响应中返回的,需要先通过关联提取:
在发送目标请求之前,添加web_reg_save_param函数来捕获SessionID,示例代码:

web_reg_save_param("SessionID",
    "LB=\"sessionId\":\"",  // 左边界,根据实际响应格式调整
    "RB=\"",                // 右边界,根据实际响应格式调整
    "Search=Body",          // 在响应体中搜索
    LAST);

这个函数会自动把响应中的SessionID值存入{SessionID}参数,后续直接引用即可。

4. 修改web_custom_request的JSON请求体

把原JSON中的固定值替换成LoadRunner参数,重点注意JSON里的转义双引号要保留,避免破坏格式。修改后的示例代码:

web_custom_request("CustomerSearch_API",
    "URL=https://your-api-domain.com/your-service-path",  // 替换成你的实际接口URL
    "Method=POST",
    "Body={\"serviceLayerOperationRequest\":{ \"contextObjectId\": \"{contextObjectId}\", \"payload\":\"{\\\"UserSessionSearchCriteria\\\":{\\\"os_st_id\\\":\\\"{contextObjectId}\\\",\\\"LastName\\\":\\\"{LastName}\\\",\\\"FirstName\\\":\\\"{FirstName}\\\"}}\", \"operationLabel\": \"CustomerSearch\", \"serviceOpInvocationId\": \"{serviceOpInvocationId}\", \"sessionId\": \"{SessionID}\" }}",
    "ContentType=application/json",
    LAST);

这里要特别注意:payload内部的双引号原本是转义状态(\"),所以参数外层的双引号需要再转一次,变成\\\",否则会导致JSON格式错误。

5. 验证参数化效果

运行脚本后,可以通过两种方式确认参数是否生效:

  • 查看【Replay Log】,检查请求体中的参数是否被正确替换为参数文件或关联到的值;
  • 在脚本中添加lr_output_message打印参数值,比如:
lr_output_message("当前使用的SessionID: %s", lr_eval_string("{SessionID}"));
lr_output_message("当前搜索用户: %s %s", lr_eval_string("{FirstName}"), lr_eval_string("{LastName}"));

内容的提问来源于stack exchange,提问作者user1227670

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:06