微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

loadrunner脚本实例——webservice协议

loadrunner脚本实例化——java Vuser协议文章中的相同的系统,这里使用webservice协议实现。

业务场景:需要从webservice接口中读取文件文件包含一父三子共4个文件

  1. 需要先使用searchdoc获取文件ID;
  2. 读取父文件的同时,根据父文件ID使用getchilddocids方法获取所有子文件ID;
  3. 根据获取的子文件ID依次读取子文件
  4. 根据返回的文件ID格式以及具体返回结果判断操作是否成功;

脚本和说明如下:

Action()
{
    	//定义变量,这些变量都是修改脚本时根据需要自己定义的,录制过程中是没有的</span>
	char *string;
	char *readf;
	char *alldocid;
	char docID[50];
	char readfreturn[20];
	char docz1[50];
	char docz2[50];
	char docz3[50];
	int k;
	int comp1;
	int comp2;

	lr_start_transaction("searchdocs");
	//首先传入参数查询父文档,会返回父文档的ID
	web_service_call( "StepName=search_103","SOAPMethod=xxxServiceImplService.xxxServiceImplPort.search","ResponseParam=response","Service=CmhkServiceImplService1","Snapshot=t1301726251.inf",BEGIN_ARGUMENTS,"operatorID=yinzg","docType=temp_002","baseProperty=","bizProperty=Customer_Code_code=\"{NewParam100}\"",END_ARGUMENTS,BEGIN_RESULT,"return=Param_return",END_RESULT,LAST);
	//把读取父文档返回的内容存放在string中</span>
	string = lr_eval_string("{Param_return}");
	//判断获取父文档ID是否成功,成的话就直接取出父文档的id,根据父文档ID的长度和所在的位置获取父文档ID;</span>
	if(strlen(lr_eval_string("{Param_return}"))>40)
	{
		lr_end_transaction("searchdocs",LR_PASS);
		lr_output_message("%s",lr_eval_string("{Param_return}"));
		for(k=1;k<66;k++)
		{
		   string++;
		}
	        strncpy(docID,string,36);
	        lr_output_message("%s",docID);
	}
        else
	{
	        lr_end_transaction("searchdocs",LR_AUTO);
	        return 1;
	}

   	//把获取到的父文档ID传给参数,然后使用readdoc读取父文档
   	lr_save_string(docID,66,0"NewParam1");
   	//开始读取父文档
	lr_start_transaction("read父文档");
	web_service_call( "StepName=readDoc_101","SOAPMethod=xxxServiceImplService.xxxServiceImplPort.readDoc","Snapshot=t1301726361.inf","docID={NewParam1}","return=Param_return1",LAST);
   	lr_output_message("%s",lr_eval_string("{Param_return1}"));
   
   	// 判断父文档是否读取成功;
	readf = lr_eval_string("{Param_return1}");
	for(k=1;k<42;k++)
	{
		readf++;
	}
	strncpy(readfreturn,readf,1);
	lr_output_message("%s",readfreturn);
	comp1=strcmp(readfreturn,"0");
        if(comp1==0)	  
		lr_end_transaction("read父文档",LR_PASS);
	else   
		lr_end_transaction("read父文档",LR_FAIL);


    	//把父文档ID 传入到参数 NewParam2中;
    	lr_save_string(docID,"NewParam2");
	//开始根据父文档ID读取所有的子文档ID;
	lr_start_transaction("获取所有子文档ID");
	web_service_call( "StepName=getChildDocIds_101","SOAPMethod=xxxServiceImplService.xxxServiceImplPort.getChildDocIds","Snapshot=t1301728561.inf","docID={NewParam2}","childDocType=","return=Param_return2",LAST);
	lr_output_message("%s",lr_eval_string("{Param_return2}"));
	//判断获取所有子ID是否成功,成功的话则把三个子ID分别存到上个字符串中;
	alldocid = lr_eval_string("{Param_return2}");
	for(k=1;k<42;k++)
	{
		alldocid++;
	}
       	strncpy(readfreturn,alldocid,"0");
	if(comp1==0)	
	{
		lr_end_transaction("获取所有子文档ID",LR_PASS);
		for(k=1;k<25;k++)
		{
			alldocid++;
		}
	       	strncpy(docz1,36);
		lr_output_message("%s",docz1);
		for(k=1;k<54;k++)
		{
			alldocid++;
		}
	       	strncpy(docz2,docz2);
		for(k=1;k<54;k++)
		{
			alldocid++;
		}
	       	strncpy(docz3,docz3);
	}
	else
	{
		lr_end_transaction("获取所有子文档ID",LR_FAIL);
		return 1;
	}

    	//把第一个子文档ID传入到参数NewParam3中,用于读取第一个子文档;
    	lr_save_string(docz1,"NewParam3");
	lr_start_transaction("读取第一个子文档");
	web_service_call( "StepName=readDoc_101","Snapshot=t1301731661.inf","docID={NewParam3}","return=Param_return3",LAST);
	// 判断第一个文档是否读取成功;
	readf = lr_eval_string("{Param_return3}");
	for(k=1;k<42;k++)
	{
		readf++;
	}
	strncpy(readfreturn,"0");
        if(comp1==0)	  
		lr_end_transaction("读取第一个子文档",LR_PASS);
	else   
		lr_end_transaction("读取第一个子文档",LR_FAIL);


    	//把第二个子文档ID传入到参数NewParam4中,用于读取第二个子文档;
	lr_save_string(docz2,"NewParam4");
	lr_start_transaction("读取第二个子文档");
	web_service_call( "StepName=readDoc_102","Snapshot=t1301731684.inf","docID={NewParam4}","return=Param_return4",LAST);
	// 判断第二个文档是否读取成功;
	readf = lr_eval_string("{Param_return4}");
	for(k=1;k<42;k++)
	{
		readf++;
	}
	strncpy(readfreturn,"0");
        if(comp1==0)	  
		lr_end_transaction("读取第二个子文档",LR_PASS);
	else   
		lr_end_transaction("读取第二个子文档",LR_FAIL);


    //把第三个子文档ID传入到参数NewParam3中,用于读取第三个子文档;
	lr_save_string(docz3,"NewParam5");
	lr_start_transaction("读取第三个子文档");
	web_service_call( "StepName=readDoc_103","Snapshot=t1301731705.inf","docID={NewParam5}","return=Param_return5","0");
        if(comp1==0)	  
		lr_end_transaction("读取第三个子文档",LR_PASS);
	else   
		lr_end_transaction("读取第三个子文档",LR_FAIL);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐