QTP软件测试工具vbs测试webservice脚本
'脚本功能:?????webservice自动化测试,自动读取测试用例,用例配置文件,最终将测试结果写入用例中。 '******************************************************************webservice?测试开始************************************************************* '请在使用前调试脚本确保脚本能正常工作 '请严格使用提供的模板编写用例,否则脚本无法正常工作 '*****************************************************************?收集相关信息************************************************************************ Dim?SoapText,XmlHead,XmlLast,SoapQuest,MethodInput,XmlMethodString1,XmlMethodString2,WebserviceAddress,testResult,ResultPath MethodInput=InputBox("方法名称为:") Dim?n,m,i,j,a,b,k,c?'n为参数个数,也即用例需要取值的列数量,m为用例数量即Excel行数,K为方法数量(保留) n=CInt(InputBox("参数个数为:")) k=CInt(inputbox("需要比较的返回值个?)) m=CInt(InputBox("Excel行数,即用例数:")) WebserviceAddress=Inputbox("接口URL为:") TestPath=Inputbox("完整用例路径:") Dim?ArrayInfo() ReDim?ArrayInfo(m,n) '****************************************************************?拼装SOAP头尾消息***************************************************************** XmlHead="<?xml?version=""1.0""?encoding=""utf-16""?>"&"<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>" XmlLast="</soap:Body>"&"</soap:Envelope>" XmlMethodString1="<"&MethodInput&"?"&"xmlns=""http://tempuri.org/"">"'&"<model>" 'XmlMethodString2="</model>"&"</"&MethodInput&">" XmlMethodString2="</"&MethodInput&">" '*****************************************************************?创建Excel对象,准备读取用例************************************************ Set?Excel?=?CreateObject("Excel.Application") oExcel.DisplayAlerts=FALSE oExcel.Visible?=?false oExcel.WorkBooks.Open(TestPath) oExcel.WorkSheets(MethodInput).Activate '*****************************************************************?将用例存入数组******************************************************************** For?i=1?To?m??'行数3,b ??For?j=1?To?n??'列数2,a ??ArrayInfo(i,j)=?oExcel.Cells(i,j).Value Next Next '****************************************************************?开始组装SOAP主体***************************************************************** SoapText="" For?b=2?To?m For?a=1?To?n SoapText=SoapText&"<"&ArrayInfo(1,a)&">"&ArrayInfo(b,a)&"</"&ArrayInfo(1,a)&">" Next SoapQuest=XmlHead&XmlMethodString1&SoapText&XmlMethodString2&XmlLast 'MsgBox(SoapQuest) WriteToFile??"c:test.txt",SoapQuest '****************************************************************?开始循环发送消息********************************************************************* '定义一XML的文档对象 '初始化http对象 Set?h?=?createobject(?"Microsoft.XMLHTTP") h.open?"POST",?WebserviceAddress,?False h.setRequestHeader?"Content-Type",?"text/xml;?charset=utf-8" h.setRequestHeader?"SOAPAction",?"http://tempuri.org/"&MethodInput h.send?(SoapQuest) While?h.readyState?<>?4 Wend '***************************************************************循环处理返回结果并将结果写入用例*********************************************** For?c=n+1?to?n+k testResult=oExcel.Cells(1,c).Value If??oExcel.Cells(b,c).Value?<>NodeData(h.responseText,testResult)?then ???oExcel.Cells(b,c+k).Value?="false" ??????????oExcel.Cells(b,c+k).Font.Color?=?RGB(255,?0,?225) ???oExcel.Cells(b,c+k).Interior.Color?=?RGB(0,?255,?0)?'Background?color ?????????????????oExcel.Cells(b,c+k).Font.Bold?=?True else ???oExcel.Cells(b,c+k).Value?="true" ???oExcel.Cells(b,c+k).Font.Color?=?RGB(0,?0) ???oExcel.Cells(b,c+k).Interior.Color?=?RGB(255,?255)?' end?if Next SoapText="" Next '****************************************************************释放Excel对象,并将结果写到指定路径*************************************** CheckFolder?"C:TestResult" ResultPath="C:TestResult"&MethodInput&".xls" oExcel.WorkSheets(MethodInput).SaveAs?ResultPath oExcel.WorkBooks.Close oExcel.Quit Set?Excel=nothing '***************************************************************?以下是被调用的函数**************************************************************** '获取结点值并输出到txt文本 function?NodeData(XmlString,Node) Dim?ResultArray,NodeString,NodeDateLen,No,i ResultArray=Split(XmlString,Node,-1,1) No=UBound(ResultArray)?'获取数组上界 '循环查找符合要求的字节 For?i=1?To?No?Step?2 NodeString=ResultArray(i) NodeDateLen=Len(NodeString)-3 NodeData=Mid(NodeString,2,NodeDateLen) Next End?function ''将string写入文本 Sub?WriteToFile?(filepath,text) ??Dim?fso,?MyFile,txtFile if??IsFileExist(filepath)=true?then ??Set?fso?=?CreateObject("Scripting.FileSystemObject") ??Set?txtFile?=?fso.GetFile(filepath) ??Set?MyFile?=?txtFile.OpenAsTextStream(8,?0) ??MyFile.Write?text&vbcrlf ??MyFile.Close ??else ??CreatedFile(filepath) ???Set?fso?=?CreateObject("Scripting.FileSystemObject") ??Set?txtFile?=?fso.GetFile(filepath) ??Set?MyFile?=?txtFile.OpenAsTextStream(8,?0) ??MyFile.Write?text&vbcrlf ??MyFile.Close ??end?if End?Sub '创建文本文件 Sub?CreatedFile(filepath) Set?fso?=?CreateObject("Scripting.FileSystemObject") ????Set?MyFile?=?fso.CreateTextFile(filepath,?true) ????MyFile.WriteLine("?Result?-->") ????MyFile.Close End?Sub '判断txt文件是否存在 Function?IsFileExist(filepath) ??Dim?fso ??Set?fso?=?CreateObject("Scripting.FileSystemObject") ??IsFileExist?=?fso.FileExists(filepath) End?Function Sub?CheckFolder(folderpath) Dim?fso,CreateFolderSuccess,f Set?fso=CreateObject("Scripting.FileSystemObject") If??fso.FolderExists(folderpath)=false?Then Set?f?=?fso.CreateFolder(folderpath) ??CreateFolderSuccess?=?f.Path ??Else ??Set?fso=nothing End?If End?Sub ??脚本使用步骤: ??1、运行脚本,提示输入方法名称。 ??2、提示输入参数个数:(参数个数为方法需要传入的参数个数,即用例中的输入) ??3、提示输入需要比较的返回值的个数:(指的是输出的结果的个数,用例中写了几列就输入几列(不带单位)) ??4、提示输入Excel行数,即用例个数(包括第一列非用例,即总行数): ??5、提示输入接口URL(即接口链接地址): ??6、提示输入完整用例路径(即用例存放地址): ??7、等待执行一段时间 ??8、查看C:TestResult,可以获取测试结果如下:(出现与预期结果不一致的用例会使用绿色将结果标明) ??9、测试完成。 ??注意事项: ??(1)目前仅实现一个方法一个脚本,且一个Excel只能存放一个方法的测试用例(后期改进) ??(2)未实现结果的统计(后期实现) ??(3)前面要求输入的内容必须准确可靠,否则脚本会执行出错(后期改进容错能力,会考虑加入脚本配置文件) ??(4)脚本必须配合指定的用例模板 ??(5)建议脚本不要使用QTP执行,直接双击操作。在QTP上运行的话,脚本执行速度会非常慢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |