QTP:vbs测试webservice脚本

发表于:2009-5-27 14:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:aslandhu    来源:51Testing博客

  脚本是写着玩的,有什么建议或者意见,欢迎各位行家指出。

  脚本部分:

作者:  aslandhu
'公司:  中科大讯飞科技股份有限公司
'部门:  技术质量部
'脚本功能:     webservice自动化测试,自动读取测试用例,用例配置文件,最终将测试结果写入用例中。
'开发开始时间: 2009-4-20
'******************************************************************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, 0)
   oExcel.Cells(b,c+k).Interior.Color = RGB(255, 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上运行的话,脚本执行速度会非常慢。

版权声明:原创作品,转载时请务必以超链接形式标明本文原始出处作者信息本声明,否则将追究法律责任。 本文出自aslandhu的51Testing软件测试博客:http://www.51testing.com/?194902
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号