51Testing软件测试论坛

标题: 在一个QTP脚本的FOR循环里如何调用外部的action [打印本页]

作者: 隐形人    时间: 2008-1-24 19:15
标题: 在一个QTP脚本的FOR循环里如何调用外部的action
救!!!!!!!
江湖救急啊!!!!!!!!!
For  i=1 to datatable.GetRowCount-1
datatable.SetCurrentRow(i)
        ifexecute=datatable.Value("IDX",1)
        If  ifexecute= 1 Then
                testcasefile=datatable.Value("table")
                testcasename=datatable.value("name")
                runaction $%#%&^&*
'这个地方要动态的调用一个外部的action,action name 为testcasename

end if

如上,如果是调用 外部的单一的action,可以用insert--->call copy of action,但是这里的testcasename是动态变化的,不能用insert--->call copy of action这个方法。另个网上也在不少说将action写成VBS格式的脚本,主样也可以调用。
现在想请教一下,除了这个方法,还有没有其它的方法,我主要是想调用用QTP录制好的脚本,而不是用手写的脚本
作者: dreamever    时间: 2008-1-24 21:02
好象要实现这样的功能并不是很难。
无论是选择哪种插入脚本的模式都没关系。只是要对那个外部action进行参数化,然后参数化值就从你的datatable里读取就行了。使用for循环对脚本读取datatable参数并没有明显的影响。
我一般都比较喜欢把数据放在excel表里,然后让脚本读取excel表,虽然自己要写的代码多了点,但是我感觉方便了好多,呵呵
作者: gy21st    时间: 2008-1-24 21:05
如果一定要采用action调用的方法,你可以把外部action都设置成reused action,然后insert -》 call to exist ing action把所有的需要调用的action都insert进到你的test里,再把所有自动生成的runaction语句删掉。再然后就可以采用你上面的方法,任何地方随意使用runaction语句。
作者: 隐形人    时间: 2008-1-25 09:43
to dreamever:
首先谢谢你的关注,我已经对外部action进行参数化了,参数化值就是testcasename=datatable.value("name")。问题出在参数化值有N个,对这N个参数化后每个action都要做一次insert--->call copy of action操作,然后才可以使用CALLACTION这个语句,不然就会报错,提示找不到action

to gy21st:
首先谢谢你的关注,这个也是一个方法。对于action不多的办法是不错,但是一旦有很多个的话就不太好用了。
作者: lansemogu1985    时间: 2009-9-9 17:02
RunAction "test_case", oneIteration,P1,P2
test_case里面的参数有两个test_case(P1,P2)

我传两个参数为什么错呢?
郁闷~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2