QTP 操作参数输出学习体会

Posted on 2009-02-11 10:47  Jackc  阅读(1253)  评论(0编辑  收藏  举报

PS:这是偶07年初学QTP时的体会,从以前的博客转过来了。

从上个星期开始针对QTP参数输出问题学习。

学习的主要目的是为了以后能更好的建立一个对QTP脚本管理。一些脚本存在重用性,比如输入汉字、新建一条数据等。我的初步设想是将这些可重复的脚本进行封装,假设一个测试用例的流程是:新建一条电话本联系人信息。那么我在制作这个脚本时,就可以调用随机输入汉字的脚本,不再需要重新拷贝输入汉字脚本代码。还有就是设计用例时,可以设计成一个流程由多个调用的小脚本组成,这样减少了脚本的编写。

想到这些我就作手开始做老。首先遇到的问题是函数中参数输入和输出的问题。看了下关于Function的VBS帮助,调用Function时可以使用Function name

的格式来输入多个Function参数。但是在输出Function参数的时候出现问题,帮助里没有提到这个问题。

PS:这里要插个小知识,在Function中声明的变量属于局部变量,它的作用域只在Function内有效,当Function结束时,这个变量就不起作用了。

所以我开始考虑使用Public来声明全局变量,这样虽然解决了Function的参数输出问题,但是在随后的操作Action参数输出时造成了麻烦。

接着两天弄参数传递把我搞的晕头转向,我始终没有实现全局变量在Action之间的输出。这个可能和QTP自身的设置有关,老大后来教我把Action的输出值在Function中通过Parameter("参数")=变量,的格式提取出来。然后按照QTP帮助里的操作调用的帮助在关键字视图对要调用的Action进行参数设置就搞定Action参数输出问题了。

接着就开始做Action的参数输入问题,由于Function的参数输入已经解决,所以我打算直接使用变量来传递参数值。先在Action1中把Function的变量参数进行设置

Function pyStrsheet (input)

接着在关键字视图设置Action1的参数属性,设置input的属性为str,默认值为空。然后在Action1脚本的顶端设置一个断点检查msgbox input,然后把Action1设置为可重复使用的操作,就开始做针对于Action1的调用操作了。之前我一直没有理解帮助里的一句话:Parameter对象是输入或输出操作,或者组件参数。我之前只实现此函数的参数输出,在参数输入的时候却没有办法实现,即使使用

RunAction "Action", oneIteration, input

这样的语句调用Action还是不能实现input的输入。之后的两天对参数输入的学习都在原地踏步没有进展。最后只有转变实现方式,采用规避的手法来实现参数的输入。

简单分析QTP调用Action时的界面,发现全局数据表Global在任何脚本都会独立存在,所以选取了在Global表的特定单元格输入字符的方法来解决调用Action时的参数输入问题。

先在Action中设置一个变量,让它读Glbal表中的固定单元格的数据:

Input=DataTable.GetSheet("Global").GetParameter("字符个数").ValueByRow(1)

当Action1调用Action脚本时,只要在Global的第一行任意选择一个数据表列,将数据表列名改为“字符个数”,然后将你需要的参数输入单元格内就OK了。这样虽然也能实现了在Action1脚本中输入Action脚本的参数,但是使用了全局数据表,对于大量脚本的维护还是存在潜在的风险。

学习参数有段时间了,于是开始对前期学习进行一个总结,当总结到Parameter函数时,突然想到在8.2版本的QTP中,当两个脚本处于嵌套情况时,在操作调用属性中对参数值配置选项中有操作参数的设置,那样可以传递两个参数的输入值,然后我在处于内层的脚本中使用

变量 = Parameter("参数")

这样的的形式就可以把进行参数赋值了。

于是我简单做了一个测试脚本,将Action2嵌套在Action1中,Action1和Action2分别设置一个同属性的输入参数,然后设计以下脚本:

在Action1中:

RunAction "Action2", oneIteration, Parameter("Action1设置的参数名")

在Action2中:

msgbox Parameter("Action2设置的参数名")

最后在Action1的操作属性中将参数的默认值改为a,运行程序,正确输出a。证明了操作间参数输入的可行性。

小结:VBS参数传递的学习一共4天,我有两点体会:

1、              前期主要看帮助,虽然得到很多有用信息,但是因为没有整理,所以无法达到学习的目的,只是增加了对VBS的熟悉程度。所以总结依然是巩固学习知识的主要手段。

2、              中期遇到即使看帮助也不能解决问题的时候,在老大的帮助下转换了思路,虽然没有达到预期的效果,但是用变通的方法达到了学习的目的。所以多思路的学习思维方式才是快速学习的要领。总的来说,这4天的VBS学习对我来说收获很大,由于本人文笔有限,总结得有些凌乱,但还是希望对大家能有启发。这篇日志只是介绍了我学VBS得到的经验,具体的VBS学习到知识以及使用操作参数需要注意的问题我在VBS总结里会详细说明。

 

Copyright © 2024 Jackc
Powered by .NET 8.0 on Kubernetes