LR 脚本---webservice(收集)

网上收集的一些脚本。 

Loadrunner测试webservice协议总结

1、http://blog.csdn.net/gzh0222/article/details/6887708

Action()
{
    int msgcount=0;
char next_message_id[32]="";


lr_start_transaction("心跳");


web_service_call( "StepName=getSysMessageCount_101",
"SOAPMethod=DCMessageWS|DCMessageWSSoap|getSysMessageCount",
"ResponseParam=response",
"Service=DCMessageWS",
"ExpectedResponse=SoapResult",
"Snapshot=t1318991539.inf",
BEGIN_ARGUMENTS,
"userId={userID}",
"companyId=1",
"imei=000000000000000",
END_ARGUMENTS,
BEGIN_RESULT,
"getSysMessageCountResult=Param_getSysMessageCountResult",
END_RESULT,
LAST);


lr_end_transaction("心跳", LR_AUTO);


    msgcount=atoi(lr_eval_string("{Param_getSysMessageCountResult}"));


    if (msgcount>=100){


do {


        lr_save_string(next_message_id,"msgID");


lr_start_transaction("查看所有系统消息");


web_service_call( "StepName=GetSysMessDetailBytime_101",
"SOAPMethod=DCMessageWS|DCMessageWSSoap|GetSysMessDetailBytime",
"ResponseParam=response",
"Service=DCMessageWS",
"ExpectedResponse=SoapResult",
"Snapshot=t1318992631.inf",
BEGIN_ARGUMENTS,
"msgID={msgID}",
"userId={userID}",
"imei=000000000000000",
"companyId=1",
END_ARGUMENTS,
BEGIN_RESULT,
"GetSysMessDetailBytimeResult=Param_GetSysMessDetailBytimeResult",
"nextmsgID=Param_nextmsgID",
END_RESULT,
LAST);


lr_end_transaction("查看所有系统消息", LR_AUTO);


strcpy(next_message_id,"");


strcpy(next_message_id,lr_eval_string("{Param_nextmsgID}"));


}while(strcmp(lr_eval_string("{Param_nextmsgID}"),"")!=0);


    }


return 0;
}

 

2、

http://blog.csdn.net/mh370/article/details/29849189

业务场景:需要从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",
        "ResponseParam=response",
        "Service=CmhkServiceImplService1",
        "Snapshot=t1301726361.inf",
        BEGIN_ARGUMENTS,
        "operatorID=yinzg",
        "docID={NewParam1}",
        END_ARGUMENTS,
        BEGIN_RESULT,
        "return=Param_return1",
        END_RESULT,
        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",
        "ResponseParam=response",
        "Service=CmhkServiceImplService1",
        "Snapshot=t1301728561.inf",
        BEGIN_ARGUMENTS,
        "operatorID=yinzg",
        "docID={NewParam2}",
        "childDocType=",
        END_ARGUMENTS,
        BEGIN_RESULT,
        "return=Param_return2",
        END_RESULT,
        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,1);
    lr_output_message("%s",readfreturn);
    comp1=strcmp(readfreturn,"0");
    if(comp1==0)    
    {
        lr_end_transaction("获取所有子文档ID", LR_PASS);
        for(k=1;k<25;k++)
        {
            alldocid++;
        }
               strncpy(docz1,alldocid,36);
        lr_output_message("%s",docz1);
        for(k=1;k<54;k++)
        {
            alldocid++;
        }
               strncpy(docz2,alldocid,36);
        lr_output_message("%s",docz2);
        for(k=1;k<54;k++)
        {
            alldocid++;
        }
               strncpy(docz3,alldocid,36);
        lr_output_message("%s",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",
        "SOAPMethod=xxxServiceImplService.xxxServiceImplPort.readDoc",
        "ResponseParam=response",
        "Service=CmhkServiceImplService1",
        "Snapshot=t1301731661.inf",
        BEGIN_ARGUMENTS,
        "operatorID=yinzg",
        "docID={NewParam3}",
        END_ARGUMENTS,
        BEGIN_RESULT,
        "return=Param_return3",
        END_RESULT,
        LAST);
    // 判断第一个文档是否读取成功;
    readf = lr_eval_string("{Param_return3}");
    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("读取第一个子文档", LR_PASS);
    else   
        lr_end_transaction("读取第一个子文档", LR_FAIL);


        //把第二个子文档ID传入到参数NewParam4中,用于读取第二个子文档;
    lr_save_string(docz2,"NewParam4");
    lr_start_transaction("读取第二个子文档");
    web_service_call( "StepName=readDoc_102",
        "SOAPMethod=xxxServiceImplService.xxxServiceImplPort.readDoc",
        "ResponseParam=response",
        "Service=CmhkServiceImplService1",
        "Snapshot=t1301731684.inf",
        BEGIN_ARGUMENTS,
        "operatorID=yinzg",
        "docID={NewParam4}",
        END_ARGUMENTS,
        BEGIN_RESULT,
        "return=Param_return4",
        END_RESULT,
        LAST);
    // 判断第二个文档是否读取成功;
    readf = lr_eval_string("{Param_return4}");
    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("读取第二个子文档", LR_PASS);
    else   
        lr_end_transaction("读取第二个子文档", LR_FAIL);


    //把第三个子文档ID传入到参数NewParam3中,用于读取第三个子文档;
    lr_save_string(docz3,"NewParam5");
    lr_start_transaction("读取第三个子文档");
    web_service_call( "StepName=readDoc_103",
        "SOAPMethod=xxxServiceImplService.xxxServiceImplPort.readDoc",
        "ResponseParam=response",
        "Service=CmhkServiceImplService1",
        "Snapshot=t1301731705.inf",
        BEGIN_ARGUMENTS,
        "operatorID=yinzg",
        "docID={NewParam5}",
        END_ARGUMENTS,
        BEGIN_RESULT,
        "return=Param_return5",
        END_RESULT,
        LAST);
    // 判断第一个文档是否读取成功;
    readf = lr_eval_string("{Param_return3}");
    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("读取第三个子文档", LR_PASS);
    else   
        lr_end_transaction("读取第三个子文档", LR_FAIL);
    return 0;
}

 

posted @ 2014-12-15 14:18  milkty  阅读(290)  评论(0)    收藏  举报