loadrunner之WebServices协议脚本编写(三种请求模式)

摘要:
以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl1、Web_service_调用模式的步骤如下:添加事务和if判断后的脚本如下:Action(){lr_start_transaction(“获取天气预报”);Web_service_call(“StepName=getWeatherbyCi

以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl  

一、web_service_call模式

步骤如下:

loadrunner之WebServices协议脚本编写(三种请求模式)第1张

loadrunner之WebServices协议脚本编写(三种请求模式)第2张

 loadrunner之WebServices协议脚本编写(三种请求模式)第3张

loadrunner之WebServices协议脚本编写(三种请求模式)第4张

loadrunner之WebServices协议脚本编写(三种请求模式)第5张

loadrunner之WebServices协议脚本编写(三种请求模式)第6张

经过增加事务和if 判断的脚本如下:

Action()
{
    
    lr_start_transaction("获取天气预报");

    web_service_call( 
         "StepName=getWeatherbyCityName_102",
        "SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getWeatherbyCityName", //服务名称|soap|获取哪个接口(城市天气预报)
        "ResponseParam=response",  //返回的参数信息
        "Service=WeatherWebService",  // webservice的服务
        "ExpectedResponse=SoapResult",  //请求的返回
        "Snapshot=t1555506477.inf",
        BEGIN_ARGUMENTS,    //输入参数开始
        "theCityName={NewParam}",   //请求输入
        END_ARGUMENTS,        //结束参数
        BEGIN_RESULT,    //返回值得开始 
        "getWeatherbyCityNameResult/*[2]=Param_string",  //返回的参数保存在Param_string
        END_RESULT,  //返回值结束
        LAST);
    
    if(strcmp(lr_eval_string("{NewParam}"),lr_eval_string("{Param_string}"))==0){
        lr_end_transaction("获取天气预报", LR_PASS);
    }else{
        lr_end_transaction("获取天气预报", LR_FAIL);
    }
    
    return 0;

}

二、soap_request模式 (外加查看请求报文的小插曲)

当开发只给你一个地址时,我们可以使用 soap UI 工具查看 步骤如下:

loadrunner之WebServices协议脚本编写(三种请求模式)第7张

loadrunner之WebServices协议脚本编写(三种请求模式)第8张

lr12 操作步骤如下:

根据城市名获取天气预报的接口文档地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getSupportCity 

loadrunner之WebServices协议脚本编写(三种请求模式)第9张

loadrunner之WebServices协议脚本编写(三种请求模式)第10张

loadrunner之WebServices协议脚本编写(三种请求模式)第11张

脚本加上改造之后的如下:

Action()    
{    
    lr_convert_string_encoding(lr_eval_string("{city_name}"),NULL,"utf-8","city");
    lr_save_string(lr_eval_string("{city}"),"cityName");
   // lr_think_time(10);
    lr_start_transaction("获取天气预报");

    soap_request("StepName=SOAP Request",
        "URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",                                        
        "SOAPEnvelope="
        "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
            "<soap:Body>"
                "<getWeatherbyCityName xmlns="http://WebXml.com.cn/">"
                    "<theCityName>{cityName}</theCityName>"
                "</getWeatherbyCityName>"
            "</soap:Body>"
        "</soap:Envelope>",                                        
        "SOAPAction=http://WebXml.com.cn/getWeatherbyCityName",                                        
        "ResponseParam=response",                                        
        "Snapshot=t1555573201.inf",                                        
        LAST);
    
    lr_xml_get_values("XML={response}",
                      "Query=/Envelope/Body/getWeatherbyCityNameResponse/getWeatherbyCityNameResult/string[2]",
                      "ValueParam=responseValue",
                      LAST);
    lr_output_message("返回城市名称:%s",lr_eval_string("{responseValue}"));
    if(strcmp(lr_eval_string("{responseValue}"),lr_eval_string("{city_name}"))==0){ //响应的参数  与参数化转码之前的参数对比
         lr_end_transaction("获取天气预报", LR_PASS);
    }else{
        lr_end_transaction("获取天气预报", LR_FAIL);
    }

    
    return 0;
}

运行结果:

loadrunner之WebServices协议脚本编写(三种请求模式)第12张

三、web_custom_request函数,创建HTTP协议完成webserive协议

loadrunner之WebServices协议脚本编写(三种请求模式)第13张

脚本如下:

Action()
{
        web_custom_request("web_custom_request",
        "URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",
        "Method=POST",
        "TargetFrame=",
        "Resource=0",
        "Referer=",
        "Mode=HTTP",
        "EncType=application/soap+xml; charset=utf-8",
        "Body=<?xml version="1.0" encoding="utf-8"?>"
"<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">"
  "<soap12:Body>"
    "<getWeatherbyCityName xmlns="http://WebXml.com.cn/">"
      "<theCityName>59134</theCityName>"
    "</getWeatherbyCityName>"
  "</soap12:Body>"
"</soap12:Envelope>",
        LAST);

    
    
    return 0;
}

免责声明:文章转载自《loadrunner之WebServices协议脚本编写(三种请求模式)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ASP.NET MVC 设置区域默认定向今天我的jupyter notebook打不开了,报错原因'No module named 'zmq.eventloop'下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Exceptionless(二)

Exceptionless(二) - 本地部署使用进阶 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/11100563.html 官网地址:http://letyouknow.net 在上一篇文章Exceptionless - .Net Core开源日志框架中就说到如何对Except...

java读取excel文件

//分析文件,结果为[[第一行的数据],[第二行的数据],.....] public static List<List<String>> analysisSheet(String filePath, intcurrentSheet) { Workbook wb = null; Shee...

反射+javacsv+scv文件构建资源获取

1.反射之前已经写过,大家可以在http://www.cnblogs.com/myadmin/p/5282628.html中大概了解下。同时请大家指正。 javacsv.jar:java中用来处理csv文件的jar包 csv文件:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯...

Redis学习(一) —— 基本使用与原理

一、数据结构 string Redis字符串是可修改字符串,在内存中以字节数组形式存在。 下面是string在源码中的定义,SDS(Simple Dynamic String) struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 byte flags; // 特殊标识位,不理睬它...

[转]从minio中读取文件流进行下载文件

本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678 一、获取Minio连接public static String minioUrl; public static String minioUsername;public static String minioPassword;@Va...

Spark操作dataFrame进行写入mysql,自定义sql的方式

业务场景:   现在项目中需要通过对spark对原始数据进行计算,然后将计算结果写入到mysql中,但是在写入的时候有个限制:   1、mysql中的目标表事先已经存在,并且当中存在主键,自增长的键id   2、在进行将dataFrame写入表的时候,id字段不允许手动写入,因为其实自增长的 要求:   1、写入数据库的时候,需要指定字段写入,也就是说,只...