LoadRunner 實現一個簡單的接口測試
閱讀 http://www.k780.com/api/idcard.get 提供的接口文檔,使用LR開發以下腳本:?
1)Idcard需要參數化10條;?
2)添加必要的檢查點;
3)將結果以以下格式保存至項目根目錄下的userInfo.txt中
[
{
"idcard": "idcard1",
"att": "att1",
"sex": "sex1"
},
{
"idcard": "idcard2",
"att": "att2",
"sex": "sex2"
}
]
其中idcard爲參數化的值,att、sex爲響應中對應的字段。
注意:結果應該不止2條,理論上應該與參數化的數量一致,即10條,需要將所有結果都保存至userInfo.txt中。
code:
long file;
int i,count;
char tmp[4];
char URL[100];
char *filename = "C:\\Program Files (x86)\\HP\\LoadRunner\\scripts\\lude\\PL0-LR\\PL0-LR-11\\demo1.txt"; //文件路徑
lr_save_string("http://api.k780.com:88/?app=idcard.get","base_url");
//定義參數數組"idcard"
lr_save_string("362322199112290014","idcard_1");
lr_save_string("511527199105032033","idcard_2");
lr_save_string("352231197212010024","idcard_3");
lr_save_string("352231197902050031","idcard_4");
lr_save_string("352231197201280029","idcard_5");
lr_save_string("450203198605050730","idcard_6");
lr_save_string("440105196402201515","idcard_7");
lr_save_string("441521199311198572","idcard_8");
lr_save_string("441521200103160815","idcard_9");
lr_save_string("372523197202250841","idcard_10");
lr_save_string("10","idcard_count");
//打開文件
if((file = fopen(filename, "a+")) == NULL){
lr_output_message("uncreate a file %s",filename);
return -1;
}
count = lr_paramarr_len("idcard");
//遍歷參數數組,進行每次身份證信息查詢
for (i=1; i<=count;i++) {
// 設置檢查點,判斷返回信息是否成功
web_reg_find("Text=ALREADY_ATT",
"SaveCount=success",
"Search=All",
LAST);
web_reg_save_param("response",
"LB={",
"RB=}",
"Search=All",
"Ord=All",
"NOTFOUND=warning",
LAST);
// 關聯獲取"att"的值
web_reg_save_param("att",
"LB=\"att\":\"",
"RB=\",",
"Search=All",
"Ord=All",
LAST);
// 關聯獲取"sex"的值
web_reg_save_param("sex",
"LB=\"sex\":\"",
"RB=\",",
"Search=All",
"Ord=All",
LAST);
//構造請求URL,將idcard傳入
sprintf(URL,"&idcard=%s&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json",lr_paramarr_idx("idcard",i));
//參數化URL
lr_save_string(URL,"tmp");
//發送請求
web_url("IDCARD_Request",
"URL={base_url}{tmp}",
"TargetFrame=Main",
"Resource=0",
"Mode=HTML",
LAST);
//如果請求返回成功,則進行如下操作
if(atoi(lr_eval_string("{success}"))){
//lr_output_message("-----------------返回成功-----------");
if(i == 1){
fprintf(file,"[\n\t{\n"); // [
}
//lr_output_message("%s",lr_eval_string("{att_1}"));
//將返回亂碼中文轉換編碼方式,解決亂碼問題
lr_convert_string_encoding(lr_paramarr_random("att"),"utf-8",NULL,"msg1");
//lr_output_message("%s",lr_eval_string("{msg1}"));
//lr_output_message("%s",lr_eval_string("{sex_1}"));
//將返回亂碼中文轉換編碼方式,解決亂碼問題
lr_convert_string_encoding(lr_paramarr_random("sex"),"utf-8",NULL,"msg2");
//lr_output_message("%s",lr_eval_string("{msg2}"));
if(i==count){//最後一條時執行,主要是添加],且最後的“}”不帶","
fprintf(file, "\t\t\"idcard\":\"%s\",\n\t\t\"att\":\"%s\",\n\t\t\"sex\":\"%s\"\n",lr_paramarr_idx("idcard",i),lr_eval_string("{msg1}"),lr_eval_string("{msg2}"));//構造json格式並參數化賦值
fprintf(file,"\t}\n]\n");
}else{//否則執行這裏
fprintf(file, "\t\t\"idcard\":\"%s\",\n\t\t\"att\":\"%s\",\n\t\t\"sex\":\"%s\"\n",lr_paramarr_idx("idcard",i),lr_eval_string("{msg1}"),lr_eval_string("{msg2}"));
fprintf(file,"\t},\n");
}
}
}
fclose(file);//關閉文件
運行後,生成的demo1.txt中內容如下
第二章參數化實現的方式
將idcard
進行文件參數化
創建唯一序列值
運行時設置迭代10次
long file;
int i,count;
char tmp[4];
char URL[100];
char *filename = "C:\\Program Files (x86)\\HP\\LoadRunner\\scripts\\lude\\PL0-LR\\PL0-LR-11\\demo2.txt";
lr_save_string("http://api.k780.com:88/?app=idcard.get","base_url");
if((file = fopen(filename, "a+")) == NULL){
lr_output_message("uncreate a file %s",filename);
return -1;
}
lr_start_transaction("idcard");
web_reg_find("Text=ALREADY_ATT",
"SaveCount=success",
"Search=All",
LAST);
web_reg_save_param("response",
"LB={",
"RB=}",
"Search=All",
"Ord=All",
"NOTFOUND=warning",
LAST);
web_reg_save_param("att",
"LB=\"att\":\"",
"RB=\",",
"Search=All",
"Ord=All",
LAST);
web_reg_save_param("sex",
"LB=\"sex\":\"",
"RB=\",",
"Search=All",
"Ord=All",
LAST);
//此處參數化
sprintf(URL,"&idcard=%s&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json",lr_paramarr_idx("idcard",i));
lr_save_string(URL,"tmp");
web_url("lala",
"URL={base_url}&idcard={idcard_list}&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json",
"TargetFrame=Main",
"Resource=0",
"Mode=HTML",
LAST);
if(atoi(lr_eval_string("{success}"))){
lr_end_transaction("idcard",LR_PASS);
lr_output_message("-----------------返回成功-----------");
if(atoi(lr_eval_string("{item_num}")) == 1){
fprintf(file,"[\n\t{\n");
}
//lr_output_message("%s",lr_eval_string("{att_1}"));
lr_convert_string_encoding(lr_paramarr_random("att"),"utf-8",NULL,"msg1");
//lr_output_message("%s",lr_eval_string("{msg1}"));
//lr_output_message("%s",lr_eval_string("{sex_1}"));
lr_convert_string_encoding(lr_paramarr_random("sex"),"utf-8",NULL,"msg2");
//lr_output_message("%s",lr_eval_string("{msg2}"));
if(atoi(lr_eval_string("{item_num}"))==10){
fprintf(file, "\t\t\"idcard\":\"%s\",\n\t\t\"att\":\"%s\",\n\t\t\"sex\":\"%s\"\n",lr_paramarr_idx("idcard",i),lr_eval_string("{msg1}"),lr_eval_string("{msg2}"));
fprintf(file,"\t}\n]\n");
}else{
fprintf(file, "\t\t\"idcard\":\"%s\",\n\t\t\"att\":\"%s\",\n\t\t\"sex\":\"%s\"\n",lr_paramarr_idx("idcard",i),lr_eval_string("{msg1}"),lr_eval_string("{msg2}"));
fprintf(file,"\t},\n");
}
}
fclose(file);