zoukankan      html  css  js  c++  java
  • loadrunner12.55:delete请求删除数据,响应删除成功,但是实际未删除,响应结果与实际结果不符

    问题描述:

    脚本实现删除场景名称为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;
    }
    

  • 相关阅读:
    [mysql] 删除唯一约束unique
    onethink 路由规则无效问题解决
    mysql source 乱码
    NLPIR
    词性标记集--计算所汉语
    [thinkphp] 无限极分类
    UITableViewCell在非Nib及Cell重用下设置CellStyle
    UIViewController的初始化
    转:NSString / NSData / char* 类型之间的转换
    转:苹果Xcode帮助文档阅读指南
  • 原文地址:https://www.cnblogs.com/apple2016/p/14822657.html
Copyright © 2011-2022 走看看