使用loadrunner编写webservice接口请求

1、使用工具:

     loadrunner12,本实例截图中都是loadrunner12工具

2、操作步骤:

      1)、新建脚本,选择Web Services协议:

             

        2)、选择工具栏:

               

         3)、点击Import,输入wsdl地址:测试代码用的地址:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

               

        4)、点击工具栏的Add Service Call:

              

 

        5)、选择接口名称:

              

             将返回数据保存到变量中:

             

           6)、完成后,生成的原始代码如下:

                  

Action()
{web_service_call( "StepName=getWeatherbyCityName_101","SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getWeatherbyCityName","ResponseParam=response","Service=WeatherWebService","ExpectedResponse=SoapResult","Snapshot=t1555599719.inf",BEGIN_ARGUMENTS,"theCityName=city_name",END_ARGUMENTS,BEGIN_RESULT,"getWeatherbyCityNameResult/*[1]=Param_string",END_RESULT,LAST);return 0;
}

                    7)、对接口请求进行完善,进行参数化,添加事务等操作

Action()
{int result;  //存放对比结果
        lr_start_transaction("获取城市天气预报");web_service_call( "StepName=getWeatherbyCityName_102",  //步骤名称"SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getWeatherbyCityName", //服务器名称|soap|获取的接口名称(城市天气预报)"ResponseParam=response", //返回的参数信息"Service=WeatherWebService",  //webservice服务"ExpectedResponse=SoapResult",  //请求返回"Snapshot=t1555558737.inf",  //快照BEGIN_ARGUMENTS,     //输入参数开始"theCityName={city_name}",  //请求输入END_ARGUMENTS, //结束参数BEGIN_RESULT,  //返回值的开始"getWeatherbyCityNameResult/*[2]=Param_string",  //返回的参数保存在Param_stringEND_RESULT, //返回值的结束
        LAST);result = strcmp(lr_eval_string("{city_name}"),lr_eval_string("{Param_string}"));  //对比输入参数是否与输出结果一致//判断是否相等if(result==0){lr_end_transaction("获取城市天气预报", LR_PASS);}else{lr_end_transaction("获取城市天气预报", LR_FAIL);}lr_output_message("result:%d",result);//将返回信息进行转码lr_convert_string_encoding(lr_eval_string("{response}"),"utf-8",NULL,"testruslt");lr_output_message("接口返回信息为:%s",lr_eval_string("{testruslt}"));return 0;
}

 

                     运行结果:

Starting iteration 1.
Starting action Action.
Action.c(6): Notify: Transaction "获取城市天气预报" started.
Action.c(8): Web service call "getWeatherbyCityName_102" started
Action.c(8): Web service call "getWeatherbyCityName_102" was successful
Action.c(28): Notify: Transaction "获取城市天气预报" ended with a "Pass" status (Duration: 0.4751 Wasted Time: 0.2191).
Action.c(35): result:0
Action.c(39): 接口返回信息为:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getWeatherbyCityNameResponse xmlns="http://WebXml.com.cn/"><getWeatherbyCityNameResult><string>直辖市</string><string>北京</string><string>54511</string><string>54511.jpg</string><string>2019/4/18 22:53:05</string><string>10℃/23℃</string><string>4月18日 多云</string><string>东北风转南风3-4级</string><string>1.gif</string><string>1.gif</string><string>今日天气实况:气温:12℃;风向/风力:西南风 3级;湿度:36%;紫外线强度:弱。空气质量:良。</string><string>紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。
健臻·血糖指数:较易波动,血糖较易波动,注意监测。
穿衣指数:较舒适,建议穿薄外套或牛仔裤等服装。
洗车指数:较适宜,无雨且风力较小,易保持清洁度。
空气污染指数:良,气象条件有利于空气污染物扩散。
</string><string>10℃/17℃</string><string>4月19日 多云转小雨</string><string>南风小于3级</string><string>1.gif</string><string>7.gif</string><string>10℃/16℃</string><string>4月20日 小雨转多云</string><string>东北风转北风小于3级</string><string>7.gif</string><string>1.gif</string><string>北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来,北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。</string></getWeatherbyCityNameResult></getWeatherbyCityNameResponse></soap:Body></soap:Envelope>
Ending action Action.
Ending iteration 1.

 

 3、通过引入soap的方式,编写webservices接口,测试链接:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName

      1)、将以上链接地址打开后,将一些部分代码复制粘贴到xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<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>string</theCityName></getWeatherbyCityName></soap:Body>
</soap:Envelope>

    2)、通过工具栏,引入soap:

                 

           3)、输入相关信息:

                 

                 

            4)、代码经过处理后:

                 

Action()
{int result;  //存放对比结果
    lr_start_transaction("获取城市天气预报");//lr_convert_string_encoding("北京",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"cityname");  //将中文的utf-8转换成lr的编码方式lr_convert_string_encoding(lr_eval_string("{send_city}"),NULL,"utf-8","cityname");lr_save_string(lr_eval_string("{cityname}"),"city_name");  soap_request("StepName=SOAP Request",  //步骤名称"URL=http://www.webxml.com.cn//WebServices/WeatherWebService.asmx",     //请求的url地址                                    "SOAPEnvelope="  //发送到服务器的xml包        "<?xml version=\"1.0\" encoding=\"utf-8\"?>""<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>{city_name}</theCityName>""</getWeatherbyCityName>""</soap:Body>""</soap:Envelope>",                                        "SOAPAction=http://WebXml.com.cn/getWeatherbyCityName",                                        "ResponseParam=response",     //存储服务器响应的输出参数的名称                                    "Snapshot=t1555584007.inf",                                        LAST);lr_convert_string_encoding(lr_eval_string("{response}"),"utf-8",NULL,"testruslt");lr_output_message("接口返回信息为:%s",lr_eval_string("{testruslt}"));lr_xml_get_values("XML={response}",  //获取返回消息体"Query=/Envelope/Body/getWeatherbyCityNameResponse/getWeatherbyCityNameResult/string[2]",  //对输入字符串xml的查找或快速查找,指定元素或属性"ValueParam=response_ctiy", //存储查询结果的输出参数的名称
                      LAST);//lr_output_message("返回的城市名称:%s",lr_eval_string("{response_ctiy}"));
     result = strcmp(lr_eval_string("{send_city}"),lr_eval_string("{response_ctiy}"));  //对比输入参数是否与输出结果一致//判断是否相等if(result==0){lr_end_transaction("获取城市天气预报", LR_PASS);}else{lr_end_transaction("获取城市天气预报", LR_FAIL);}return 0;
}

 

                         运行结果:

Starting iteration 1.
Starting action Action.
Action.c(6): Notify: Transaction "获取城市天气预报" started.
Action.c(11): SOAP request "SOAP Request" started
Action.c(11): SOAP request "SOAP Request" was successful
Action.c(31): 接口返回信息为:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getWeatherbyCityNameResponse xmlns="http://WebXml.com.cn/"><getWeatherbyCityNameResult><string>直辖市</string><string>北京</string><string>54511</string><string>54511.jpg</string><string>2019/4/18 23:14:10</string><string>10℃/23℃</string><string>4月18日 多云</string><string>东北风转南风3-4级</string><string>1.gif</string><string>1.gif</string><string>今日天气实况:气温:12℃;风向/风力:南风 3级;湿度:36%;紫外线强度:弱。空气质量:良。</string><string>紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。
健臻·血糖指数:较易波动,血糖较易波动,注意监测。
穿衣指数:较舒适,建议穿薄外套或牛仔裤等服装。
洗车指数:较适宜,无雨且风力较小,易保持清洁度。
空气污染指数:良,气象条件有利于空气污染物扩散。
</string><string>10℃/17℃</string><string>4月19日 多云转小雨</string><string>南风小于3级</string><string>1.gif</string><string>7.gif</string><string>10℃/16℃</string><string>4月20日 小雨转多云</string><string>东北风转北风小于3级</string><string>7.gif</string><string>1.gif</string><string>北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来,北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。</string></getWeatherbyCityNameResult></getWeatherbyCityNameResponse></soap:Body></soap:Envelope>
Action.c(33): "lr_xml_get_values" succeeded, 1 match processed
Action.c(46): Notify: Transaction "获取城市天气预报" ended with a "Pass" status (Duration: 0.2918 Wasted Time: 0.0522).
Ending action Action.
Ending iteration 1.

 

转载于:https://www.cnblogs.com/benben-wu/p/10733266.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#格式化字符串净化代码的方法

C#格式化字符串净化代码的方法&#xff0c;在C#编程中&#xff0c;字符串类型是最容易处理出错的地方&#xff0c;其代价往往也很昂贵&#xff0c;在.NET Framework中&#xff0c;字符串是一个不可变的类型&#xff0c;当一个字符串被修改后&#xff0c;总是创建一个新的副本&a…

实验二《Java面向对象程序设计》实验报告

一、实验内容 初步掌握单元测试和TDD理解并掌握面向对象三要素&#xff1a;封装、继承、多态初步掌握UML建模熟悉S.O.L.I.D原则了解设计模式 二、实验步骤 &#xff08;一&#xff09;单元测试 1.三种代码&#xff1a;伪代码、测试代码、产品代码需求&#xff1a;在一个MyUtil类…

Java 包装类 自动装箱和拆箱

包装类&#xff08;Wrapper Class&#xff09; 包装类是针对于原生数据类型的包装。 因为有8个原生数据类型&#xff0c;所以对应有8个包装类。 所有的包装类&#xff08;8个&#xff09;都位于java.lang下。 Java中的8个包装类分别是&#xff1a;Byte, Short, Integer, Long, …

Linux网络编程IPv4和IPv6的inet_addr、inet_aton、inet_pton等函数小结

知识背景&#xff1a; 210.25.132.181属于IP地址的ASCII表示法&#xff0c;也就是字符串形式。英语叫做IPv4 numbers-and-dots notation。 如果把210.25.132.181转换为整数形式&#xff0c;是3524887733&#xff0c;这个就是整数形式的IP地址。英语叫做binary data。&#xff0…

MySQL中alter table range partition

最近在用MySQL开发新功能时&#xff0c;使用到了alter table range partition的功能&#xff0c;在此总结下mysql innodb支持的alter table range partition相关功能。mysql的版本是8.0.22, os: linux ubuntu 对alter range partition的操作主要由以下几个&#xff1a; analy…

可恶,谁占用了我的80端口?

下午在室友的本本上上网&#xff0c;突然想看一个新闻系统&#xff0c;他的本上没有安装环境&#xff0c;于是下载一个wamp,安装。运行wamp&#xff0c;晕...怎么只有1个服务在运行&#xff0c;导致我的localhost打不开&#xff0c;看了一下mysql服务运行正常&#xff0c;apach…

laravel命令

新建控制器 php artisan make:controller IssuesController 新建控制器并自动生成对应RESTful风格路由相关CURD方法 php artisan make:controller IssuesController -r 新建一个迁移文件 php artisan make:migration create_issues_table --createissues 回滚上一次迁移的内容 …

CMakeList.txt中设置一个可变的变量的值(bool)

在CMakeList.txt中有个bool变量&#xff0c;在debug模式下需要设置为OFF&#xff0c;在其他模式(release、thread、leak)下设置为ON&#xff0c;需要在makefile中将该值设置不同的值&#xff0c;CMakeList.txt中增加的代码如下&#xff1a; IF(CMAKE_BUILD_TYPE STREQUAL &quo…

iOS开发那些事--创建基于故事板的iOS 6的HelloWorld

基于故事板的HelloWorld工程 Storyboard&#xff08;故事板&#xff09;是用来替代xib的技术&#xff0c;也是iOS 5最重要的新特性之一。我们用Storyboard&#xff08;故事板&#xff09;重构HelloWorld。 使用故事板重构HelloWorld 勾选“Use Storyboards”项。 工程创建完成之…

Android——Ubuntu android NDK 配置

前提工作&#xff1a; 在虚拟机ubuntu下载linux版本&#xff0c;终端cd到解压根目录 第一步:make -v 和 gcc -v 检测 第二步: 检测没有错误,输入命令: ./build/host-setup.sh 会出现错误&#xff0c;必须的。要进行修改&#xff1a;编辑 build/host-setup.sh 修改#!/bin/sh 为#…

.Net 2.0中使用扩展方法

大家都知道扩展方法是不能直接在2.0中使用的需要引用一个‍System.Core的dll不过现在有更加简单的方法了只要在工程项目中加入以下代码就OK啦‍namespace System.Runtime.CompilerServices{[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTarge…

mysql中的if [not] exists

最近在MySQL数据库的基础上开发分布式的数据库&#xff0c;需要支持一个if [not] exists语法。学习了SQL语法解析部分&#xff0c;总结下&#xff1a; 1、在MySQL中&#xff0c;创建表时支持create table if not exists db.table_name .... create table if not exists test1…

oracle Merge 函数

Merge用来从一个表中选择一些数据更新或者插入到另一个表中。而最终是用更新还是用插入的方式取决于该语句中的条件。下面我们简单的举一个例子&#xff1a;SQL> create table merge_test1(a number,b varchar2(20)) 表已创建。SQL> create table merge_test2(a number,b…

Linux下将两个10G的文件打包成一个文件需要多久

Linux下将两个10G的文件打包成一个文件需要多久 | 公云网博客Linux下将两个10G的文件打包成一个文件需要多久发表于 2012 年 9 月 19 日 由 refactor微博上kevin_prajna提了一个问题&#xff1a;“求Linux下一打包工具&#xff0c;需求&#xff1a;能把两个10G的文件打包成一个…

基于美国人口数据分析

https://github.com/jakevdp/PythonDataScienceHandbook 英文看不懂的话请自行选择中文翻译版转载于:https://www.cnblogs.com/Lucifer77/p/10741538.html

MySQL innodb每行数据长度的限制

今天在使用MySQL innodb时&#xff0c;create table时&#xff0c;报出这样的一个错误: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs 查阅MySQL的官方资料才发现&…

Lucene4:创建查询,并高亮查询关键词

1. 要求 环境&#xff1a; Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本功能&#xff1a;  1).高亮查询演示 注意&#xff1a; 此篇文章开始&#xff0c;索引目录将不再使用示范目录&#xff0c;而是使用真实的数据。即LUCENE_INDEX_DIR "C:\\lucene\\data&…

字典的相关函数

#coding:utf-8""" #第一种写法 """ def func(a,b,c,*,d):print(a,b,c)print(d)func(1,2,3,d4)""" #第二种写法 """ def func(*args,b,c,**kwargs):print(args)print(kwargs)print(b,c)# 函数调用处 func(1,2,3,4,…

python实例31[文件夹清理]

使用&#xff1a; foldercleanup.py -d 10 -k c:\test\keepfile.txt c:\test 表示对c:\test目录只保留最近10天的子文件夹和keepfile.txt中指定的子文件夹。 代码&#xff1a; importosimportos.pathimportdatetime defgetOption(): fromoptparse importOptionParser de…

MySQL中的alter table操作之add/modify/drop列

alter table的操作有增加列、删除列和修改列的长度等 create table t1 (c1 int primary key) engine innodb; // 增加一个列c2 alter table t1 add c2 varchar(16379); drop table t1;create table t1 (c1 int primary key, c2 varchar(50)) engine innodb; // 将列c2长度更…