菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
257
0

loadrunner12.55:delete请求删除数据,响应删除成功,但是实际未删除,响应结果与实际结果不符

原创
05/13 14:22
阅读数 9683

问题描述:

脚本实现删除场景名称为test1的记录,删除请求响应删除成功{"success":true,"data":"","code":200,"message":"删除成功!"},但是前台显示该数据仍然存在

原脚本实现如下:

Action()
{
	int i=1,busiSceneIdnum;
	char* busiSceneId;

	web_add_auto_header("Accept-Language", 
		"zh-Hans-CN,zh-Hans;q=0.5");
	
	web_reg_save_param("queryResponseBody",
		"LB=",
		"RB=",
		"Search=Body",
		LAST);
	
	web_custom_request("queryScene", 
		"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://10.248.57.226:9010/U-C/", 
		"Snapshot=t23.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=utf-8", 
		"Body={\"current\":1,\"size\":10,\"busiSceneId\":\"\",\"sceneName\":\"\"}", 
		LAST);
	
		// Create a Json object from a string.
    lr_eval_json("Buffer={queryResponseBody}",
                 "JsonObject=json_obj_1", LAST);
	    
	busiSceneIdnum=lr_json_get_values("JsonObject=json_obj_1",//获取响应体所有busiSceneId字段值并保存到数组JinKuList中,用于后面删除的参数化
                "ValueParam=JinKuList",
                "QueryString=$.data.tablesArr[*].busiSceneId",
                "SelectAll=Yes",
                 LAST);

	
	while(i<busiSceneIdnum){
		lr_save_int(i,"index");
		busiSceneId=lr_eval_string("{JinKuList_{index}}");
		lr_output_message("busiSceneId=%s",lr_eval_string(busiSceneId));

		//{"success":true,"data":"","code":200,"message":"删除成功!"}
		web_reg_save_param("ResponseBody",
			"LB=",
			"RB=",
			"Search=Body",
			LAST);
	
		web_reg_save_param("respStatus",
			"LB=\"success\":",
			"RB=,\"data",
			"Search=Body",
			LAST);	
	
		web_reg_save_param("respMsg",
			"LB=message\":\"",
			"RB=\"}",
			"Search=Body",
			LAST);		

		lr_start_transaction("deleteJinKu");
		web_custom_request("delete", 
		    "URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId=lr_eval_string(busiSceneId)&state=-1",
			"Method=DELETE", 
			"Resource=0", 
			"RecContentType=application/json", 
			"Referer=http://10.248.57.226:9010/U-C/", 
			"Snapshot=t24.inf", 
			"Mode=HTML", 
			LAST);
		
		if(lr_eval_string("{respStatus}")){
			lr_output_message("删除金库成功");
			lr_end_transaction("deleteJinKu", LR_PASS);
	
		}else{
			lr_error_message("删除金库失败,失败原因为:%s",lr_eval_string("{respMsg}"));
			lr_end_transaction("deleteJinKu", LR_FAIL);
	
		}	
	
		
		i=i+1;
	}
	
	
	web_reg_save_param("LastResponseBody",
		"LB=",
		"RB=",
		"Search=Body",
		LAST);

	web_custom_request("queryScene_2", 
		"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://10.248.57.226:9010/U-C/", 
		"Snapshot=t25.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=utf-8", 
		"Body={\"size\":5,\"current\":1,\"busiSceneId\":\"\",\"sceneName\":\"\"}", 
		LAST);

	return 0;
}

  日志显示:

 

经与开发沟通定位显示:实际发送的删除请求地址为http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId=lr_eval_string(busiSceneId)&state=-1,说明lr_eval_string(busiSceneId)函数的参数化并未起作用,而是本身作为字符串发起了请求,而系统针对非失败的请求均响应成功,所以问题解决的根本在于请求中的busiSceneId字段如何取值。

 

解决办法:

将请求地址url进行参数拼接实现,实现脚本如下:

lr_save_string(lr_paramarr_idx("JinKuList", i), "busiSceneId");//获取数组JinKuList中索引为i的值

  

		web_custom_request("delete", 
		    "URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId={busiSceneId}&state=-1",
			"Method=DELETE", 
			"Resource=0", 
			"RecContentType=application/json", 
			"Referer=http://10.248.57.226:9010/U-C/", 
			"Snapshot=t24.inf", 
			"Mode=HTML", 
			LAST);

 

优化后的完整脚本如下:

Action()
{
	int i=1,busiSceneIdnum;

	web_add_auto_header("Accept-Language", 
		"zh-Hans-CN,zh-Hans;q=0.5");
	
	web_reg_save_param("queryResponseBody",
		"LB=",
		"RB=",
		"Search=Body",
		LAST);
	
	web_custom_request("queryScene", 
		"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://10.248.57.226:9010/U-C/", 
		"Snapshot=t23.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=utf-8", 
		"Body={\"current\":1,\"size\":10,\"busiSceneId\":\"\",\"sceneName\":\"\"}", 
		LAST);
	
		// Create a Json object from a string.
    lr_eval_json("Buffer={queryResponseBody}",
                 "JsonObject=json_obj_1", LAST);
	    
	busiSceneIdnum=lr_json_get_values("JsonObject=json_obj_1",//获取响应体所有busiSceneId字段值并保存到数组JinKuList中,用于后面删除的参数化
                "ValueParam=JinKuList",
                "QueryString=$.data.tablesArr[*].busiSceneId",
                "SelectAll=Yes",
                 LAST);

	
	while(i<busiSceneIdnum){

    	lr_save_string(lr_paramarr_idx("JinKuList", i), "busiSceneId");//获取数组JinKuList中索引为i的值

		//{"success":true,"data":"","code":200,"message":"删除成功!"}
		web_reg_save_param("ResponseBody",
			"LB=",
			"RB=",
			"Search=Body",
			LAST);
	
		web_reg_save_param("respStatus",
			"LB=\"success\":",
			"RB=,\"data",
			"Search=Body",
			LAST);	
	
		web_reg_save_param("respMsg",
			"LB=message\":\"",
			"RB=\"}",
			"Search=Body",
			LAST);		

		lr_start_transaction("deleteJinKu");
		web_custom_request("delete", 
		    "URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId={busiSceneId}&state=-1",
			"Method=DELETE", 
			"Resource=0", 
			"RecContentType=application/json", 
			"Referer=http://10.248.57.226:9010/U-C/", 
			"Snapshot=t24.inf", 
			"Mode=HTML", 
			LAST);
		
		if(lr_eval_string("{respStatus}")){
			lr_output_message("删除金库成功");
			lr_end_transaction("deleteJinKu", LR_PASS);
	
		}else{
			lr_error_message("删除金库失败,失败原因为:%s",lr_eval_string("{respMsg}"));
			lr_end_transaction("deleteJinKu", LR_FAIL);
	
		}	
	
		
		i=i+1;
	}
	
	
	web_reg_save_param("LastResponseBody",
		"LB=",
		"RB=",
		"Search=Body",
		LAST);

	web_custom_request("queryScene_2", 
		"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://10.248.57.226:9010/U-C/", 
		"Snapshot=t25.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=utf-8", 
		"Body={\"size\":5,\"current\":1,\"busiSceneId\":\"\",\"sceneName\":\"\"}", 
		LAST);

	return 0;
}

 

发表评论

0/200
257 点赞
0 评论
收藏