在使用loadrunner测试springboot的api接口的时候,不会像是测试页面的时候那样可以进行录制,测试API只能写脚本,这里写下一些调用API的脚本,方便以后查询使用,下面的请求都是JSON格式的
- 使用POST上传文件,这种方式上传文件,就像是使用Form请求上传文件,后台使用request对象从parameter中获取文件一样
//上传文件
Action()
{
lr_start_transaction("4_upload");
//设置自定义表头
web_add_header("flag","sys01");
web_add_header("timestamp","1504056353553");
web_add_header("token","329415275d5caa3edcbddccc003d9562ae9868cb73ef66029c4c35c178ea56423da6f8daec46b38f");
//调用loadrunner内部函数上传文件
web_submit_data("upload",
"Action=http://localhost:8080/ecmtkRest/ecm/upload",
"Method=POST",
"EncType=multipart/form-data",
"TargetFrame=",
"RecContentType=application/json",
"Mode=HTML",
ITEMDATA,
"Name=flag","Value=sys03", ENDITEM,
"Name=timestamp", "Value={timeStamp}", ENDITEM,
"Name=token", "Value={token}", ENDITEM,
"Name=file", "Value=K:\\image\\669.jpe", "file=yes", ENDITEM,*
LAST
);
lr_end_transaction("4_upload", LR_AUTO);
return 0;
}
- 将文件转换为二进制字符串,然后保存在parameter中上传到服务器
上传文件——二进制
Action()
{
lr_start_transaction("4_upload");
web_add_header("flag","{flag}");
web_add_header("timestamp","{timeStamp}");
web_add_header("token","{token}");
/*
web_submit_data("upload",
"Action=http://localhost:8080/ecmtkRest/ecm/upload",
"Method=POST",
"RecContentType=application/json",
"Mode=HTTP",
//设置HTTP请求的body部分
"Body=data={data}&file={file}",
LAST
);
}
- 这种方式是当api的请求参数设置为@RequestBody的时候使用的,直接将文件的二进制字符串和需要上传的参数序列化为JSON字符串,直接放在body中
下面是这种球的HTTP内容
Action()
{
//注意这里使用的web_custom_request函数
web_custom_request("upload",
"URL=http://localhost:8080/ecmtkRest/ecm/upload",
"Method=POST",
"Resource=0",
"Referer=",
"RecContentType=application/json",
"EncType=application/json",
"Mode=HTTP",
"Body={data}",
LAST);
lr_end_transaction("4_upload", LR_AUTO);
return 0;
}
//java代码
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String uploadFile(@RequestBody JSONObject data){
return service.uploadFile(data);
}
4.Get请求
lr_start_transaction("5_4_company_year_month_10000");
web_add_header("flag","{flag}");
web_add_header("timestamp","{timestamp}");
web_add_header("token","{token}");
web_add_header("pageIndex","1");
web_add_header("pageSize","10000");
//获取调用API之后的返回值
web_reg_save_param("code",
"LB=\"code\":\"",
"RB=\"",
LAST);
web_custom_request("5_company_year_month_10000",
"Method=GET",
"URL={url}/ecmtkRest/scaninfo/{company}/{year}/{month}",
"RecContentType=application/json",
"EncType=application/json",
"Mode=HTTP");
//对返回值进行判断
if(strstr(lr_eval_string("{code}"),"0") != NULL)
{
lr_output_message("请求=%s","成功");
lr_end_transaction("5_1_company_year_month_10000", LR_PASS);
}
else
{
lr_output_message("请求=%s","失败");
lr_end_transaction("5_1_company_year_month_10000", LR_FAIL);
}