SoapUI 之 webService 接口测试 [5]
一、webservice接口实例说明
学习的话,大家可以自行到网上找 一些免费的webservice接口来练手。本文中选择实例为:中国电视节目预告(电视节目表) WEB 服务。
Endpoint : http://ws.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx
Disco : http://ws.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?disco
WSDL : http://ws.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl
浏览器输入:http://ws.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx 即可获取到这个接口的相关说明,以下简单罗列下这个接口的相关业务。
[第一步] getAreaDataSet: 获得支持的省市(地区)和分类电视列表 DataSet。
输入参数:无;返回数据:DataSet,结构为:Item(areaID)=省市和分类电视ID,Ietm(Area)=省市和分类电视名称,Item(Zone)=所属地区。
[第二步] getTVstationDataSet: 通过省市ID或分类电视ID获得电视台列表 DataSet
输入参数:theAreaID = 省市ID或分类电视ID(Integer);返回数据:DataSet,结构为:Item(tvStationID)=电视台ID,Ietm(tvStationName)=电视台名称。
[第三步] getTVchannelDataSet : 通过电视台ID获得该电视台频道列表 DataSet
输入参数:theTVstationID = 电视台ID(Integer);返回数据:DataSet,结构为:Item(tvChannelID)=频道ID,Ietm(tvChannel)=频道名称。
[第四步] getTVprogramDateSet : 通过频道ID获得该频道节目列表 DataSet
输入参数:theTVchannelID = 频道ID(Integer),theDate=日期(String 格式:yyyy-MM-dd,如:2007-07-02,空则默认当天),userID=商业用户ID(String 免费用户不需要);返回数据:DataSet,结构为:Item(playTime)=播出时间,Ietm(meridiem)=PM或AM,Ietm(tvProgram)=节目信息,Item(tvStationInfo)=电视台信息。
二、创建soap项目,运行单个接口,能否跑通
1、右键Projects -->New SOAP Project ,在弹框界面的“initial WSDL” 输入实例的WSDL地址,点击ok。

2、[第一步]getAreaDataSet请求。参数无,点击运行,获得支持的省市(地区)和分类电视列表。

3、[第二步] getTVstationDataSet请求。参数输入[第一步]获取到的areaID:18(想查看湖南地区的,所以输入18),点击运行,获得电视台列表。

4、[第三步] getTVchannelDataSet请求。参数输入[第二步]获取到的tvStationID:98,点击运行,获得该电视台频道列表。

5、[第四步] getTVprogramDateSet请求。theTVchannelID输入[第三步]获取到的tvChannelID:290、theDate输入2019-11-11、userID没有商业用户选择不输入。点击运行,获得该频道节目列表。

三、构建测试用例,进行脚本优化,执行测试用例
1、右键 ChinaTVprogramWebService 工程-->New TestSuite,右键TestSuite-->New TestCase。
将上面第一步到第四步的request请求,拖动添加到Test Steps中,按第一步~第四步调整request请求的顺序如下。

2、第二、三、四步参数输入都依赖到了上一步的返回结果,这里进行下Property Transfer设置。
1) [第二步]getTVchannelDataSet请求。需要传入上一个请求获取到的areaID,这里插入Property Transfer进行如下设置:

这里说明下Source跟Target的XPath表达式是怎么来的:
a、获取到getAreaDataSet的response进行分析如下:

b、获取到getTVstationDataSet的request进行分析如下:

2) [第三步]getTVstationDataSet请求。需要传入需要传入上一个请求获取到的tvStationID,这里Property Transfer进行如下设置:

3) [第四步]getTVstationDataSet请求。需要传入上一个请求获取到的tvChannelID,这里Property Transfer进行如下设置:

3、继续优化脚本,将最后一个getTVstationDataSet请求中传入的theDate参数进行变量设置,并且进行变量引用
a、右键Test Steps-->Add Step-->Properties,然后设置变量date及赋值

b、双击getTVstationDataSet请求,将theDate传值为${Properites#date}

4、双击执行TestCase,测试完成。可自行查看测试结果。
