LoadRunner中同一请求返回JSON/XML时如何实现关联?
在LoadRunner中处理JSON/XML混合响应的关联方法
当然可以实现,核心思路是先识别响应的格式,再针对性使用对应函数提取目标值VerificationId,具体步骤如下:
第一步:捕获格式判断依据
优先通过响应头的Content-Type判断格式,准确性更高。先提取响应头中的Content-Type参数:web_save_param_ex( "Param=Content_Type", "LB=Content-Type: ", "RB=\r\n", "Search=Headers", LAST);若无法通过响应头判断,也可直接捕获整个响应内容作为判断依据:
web_save_param_ex( "Param=Response_Content", "LB=", "RB=", "Search=Body", LAST);第二步:分支处理不同格式的提取逻辑
根据捕获到的标识,分别处理JSON和XML格式的提取:// 基于Content-Type的判断逻辑 if(strstr(lr_eval_string("{Content_Type}"), "application/json") != NULL) { // JSON格式:用正则提取(兼容所有LoadRunner版本) web_reg_save_param_regexp( "Param=VerificationId", "RegExp=\"VerificationId\":\\s*\"([^\"]+)\"", "Search=Body", LAST); // 若版本支持,也可使用JSON专用函数简化操作: // lr_json_get_values("JSON={Response_Content}", "ValueParam=VerificationId", "Query=$.VerificationId", LAST); } else if(strstr(lr_eval_string("{Content_Type}"), "application/xml") != NULL) { // XML格式:用左右边界提取(简单场景首选) web_reg_save_param( "Param=VerificationId", "LB=<VerificationId>", "RB=</VerificationId>", "Search=Body", LAST); // 复杂XML结构可改用XPath提取: // web_reg_save_param_xpath( // "Param=VerificationId", // "Query=/VerificationId/text()", // "Snapshot=t1.inf", // LAST); }关键注意事项
web_reg_*系列函数是前置函数,必须放在目标请求之前执行;如果是先获取响应再判断,需改用后置提取方式(比如用lr_save_string配合正则表达式手动解析)。- 测试时要覆盖两种响应场景,确保分支逻辑都能正常触发。
- 若响应的
Content-Type不标准,可改用检查响应内容中是否包含{"VerificationId"或<VerificationId>这类特征字符串来判断格式。
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

