51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5652|回复: 23
打印 上一主题 下一主题

[原创] QTP中参数化问题.

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-17 09:32:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
将QTP中的脚本进行了参数化,设置参数5个,但是在执行时,只有第一个通过.哪位大侠知道,帮忙解决一下,多谢.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

24#
发表于 2011-6-10 12:55:23 | 只看该作者
不错
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2010-3-3 09:41:01 | 只看该作者
路过,学习了。
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2010-3-3 09:35:43 | 只看该作者
global 和 local 的区别
global 是全局的!有几行数据程序就要回放几次!!不能重新设置!!
local 是局部的!有几行数据action 就要回访几次!!
设置action的重复次数的操作:反击action,选择action call property,即可进行选择.
下面有几种情况:
1.当global 有不止一行的数据,action call property->Run On all Rows
程序每次运行时,action中的每行都要执行
2.当global 有不止一行的数据,action call property->Run  one iteration only
而且global的行数>action的行数,当action执行到最后一行后,不管此时global 的行数为几,下次回放时action都执行最后一行!
如果global的行数<action的行数,action就执行不到最后一行
3.action call property->Run from rows to rows,就结合上面所说的理解吧!!
希望能给大家帮上忙,帮我顶一下!!第一次回答问题!
http://bbs.51testing.com/thread-14818-1-1.html
更正一下
global的重复次数在test->run中设置
其实对DataTable的操作可以很灵活……
由QTP自动生成的语句是这样的:
DataTable("Col", dtLocalSheet)
DataTable("Col", dtGlobalSheet)
其中,dtLocalSheet就是当前Action的DataTable,dtGlobalSheet就是Global的DataTable,Col是列名

还有很多写法,比如
DataTable("Col", "Action2")
就是读取Action2的Col列。
你完全可以读取另一个Action的DataTable,而不需要跨Action传递变量,使用DataTable比变量更方便,因为结束后能在Result里看到运行时的值
你可以在一个Action里读取另外一个Action的列,但是要注意另外一个Action的当前行
比如你在Action1里读取Action2的某列,如果Action1运行到第二行,你读取的Action2还是第一行的数据,解决办法就是写上这句:
DataTable.GetSheet("Action2").SetCurrentRow(2)
你也可以用GetCurrentRow来获取Action1的行,然后再用SetCurrentRow来保持两个Action的当前行一致:
CurrRow = DataTable.GetSheet("Action1").GetCurrentRow
DataTable.GetSheet("Action2").SetCurrentRow(CurrRow)

还有一种写法:
DataTable(1, "Action2")
这样就是读取Action2的第一列,不管第一列叫什么名字,都能读
这样就很方便,比如:
For i = 1 To 10
        MsgBox DataTable(i, "Action2")
Next
这样就能循环读取Action2的1~10列了

同样,表也可以用数字代替:
DataTable(1, 2)
这样就是读取第二个Action表的第一列
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2010-3-3 09:31:12 | 只看该作者
论坛上有人问到这个问题,顺便整理一下。File>Test Settings中Run标签控制GlobalSheet的执行,每个Action的Call Properties控制对应LocalSheet的执行。很多人碰到的问题都是忽略了在读取测试数据时,实际上是有这两个控制参数的。两者的组合如下:

假设Globalsheet和LocalSheet的数据如下:

GlobalSheet有3行数据:1,2,3

LocalSheet有3行数据 :a,b,c

1.Global Setting = run on all rows

  Local Setting = run on all rows

  运行:1a,1b,1c,2a,2b,2c,3a,3b,3c

2.Global Setting = run on all rows

  Local Setting = run one iteration only

  运行:1a,2b,3c

3.Global Setting = run on all rows

  Local Setting = run from row 1 to 2

  运行:1a,1b,2a,2b,3a,3b

4.Global Setting = run one iteration only

  Local Setting = run on all rows

  运行:1a,1b,1c

5.Global Setting = run one iteration only

  Local Setting = run one iteration only

  运行:1a

6.Global Setting = run one iteration only

  Local Setting = run from row 1 to 2

  运行:1a,1b

就不再继续列了,其他的情况也能推断出来。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2010-3-2 22:44:13 | 只看该作者
help上有,看看你的参数是不是设置正确了。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2010-3-2 17:42:16 | 只看该作者
跟在楼上身后路过
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2010-3-2 10:49:36 | 只看该作者
路过
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2010-3-2 09:51:20 | 只看该作者
这个问题解决了吗?????我认为你先要检查你的参数是否正确
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-8-17 22:14:31 | 只看该作者
原帖由 gzj_06 于 2007-8-17 19:07 发表
是一定会发生吗,还是有时会发生,为什么会这样,貌似我上次循环出错就可能与此有关



是一定发生,如果没加入打开程序的那句语句而循环。

如果不加入打开的语句,QTP运行脚本自动打开程序,只自动打开一次,脚本运行中的循环,除非录制时准备好了循环的条件:在动作最后运行了再次打开程序。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-8-17 19:07:31 | 只看该作者

鼠标在执行最后语句处于失去焦点状态?

原帖由 omring 于 2007-8-17 10:51 发表
用QTP自带的订票程序举例:
我的方法是取消QTP的自动打开程序,然后在第一行加入SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Pro ...
是一定会发生吗,还是有时会发生,为什么会这样,貌似我上次循环出错就可能与此有关
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-8-17 18:02:13 | 只看该作者
还可以在选择“File”->"Settings.....",在打开的对话框中选择Run tab页,选择上面的Run on all rows
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-8-17 11:25:57 | 只看该作者
谢谢omring
总结下:

Keyword View
——>右键点击预设置循环的Action图标
——>Action Call Properties...
——>Run
——>Run on all rows

搞定
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-8-17 11:14:34 | 只看该作者
原帖由 kangaroo 于 2007-8-17 11:08 发表
如何选中run all row的来着?我真搞忘了sdlkfj7


右键点击左边列表里面的ACTION,选择”action call per***(具体怎么写忘了)“就可以选run all row等选项了。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-8-17 11:08:45 | 只看该作者
如何选中run all row的来着?我真搞忘了sdlkfj7
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-17 11:04:52 | 只看该作者
恩,这里是不需要考虑是run all rows出了问题,楼主得考虑数据的使用范围,是否是local(action)/global设置错了
还有,每一循环程序/网页的起始状态和结束状态必须完全一致,否则也会导致循环失败
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-8-17 10:54:16 | 只看该作者
原帖由 kangaroo 于 2007-8-17 10:37 发表
类似现象我遇到过,一是把数据从全局表(global)改为本地表(action X)
二是有个功能选项要改变,大意是把只执行第一行数据改为数据表里所有行都执行……怎么改的来着??!!
忘了sdlkfj1  我帮你查查去



楼主已经说了,run all row选中了。不是这个问题吧。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-17 10:51:29 | 只看该作者
用QTP自带的订票程序举例:
我的方法是取消QTP的自动打开程序,然后在第一行加入SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
让QTP每次运行执行代码打开,避免鼠标在执行最后语句处于失去焦点状态。感觉执行语句打开程序优于QTP自动打开。

至于参数化是local(action)还是global,看具体情况,选错误也会导致参数只能用一次。要看这个参数是每个当作(action)在循环中都要用,还是多个action都要用到这个参数。

不知道能否解决。仔细看运行结果,看看是哪里出问题,描述一下。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-17 10:37:18 | 只看该作者
类似现象我遇到过,一是把数据从全局表(global)改为本地表(action X)
二是有个功能选项要改变,大意是把只执行第一行数据改为数据表里所有行都执行……怎么改的来着??!!
忘了sdlkfj1  我帮你查查去
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-8-17 10:33:31 | 只看该作者
那怎么解决吧.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-24 00:28 , Processed in 0.082863 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表