微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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上运行的话,脚本执行速度会非常慢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐