|
昨天在作QTP测试时发现了全局变量的问题,主ACTION的代码如下
RunAction "login", oneIteration
public filename
public clicktimes
filename="*********"
clicktimes=5
EditReportHead(filename)
'RunAction "***", oneIteration
'RunAction "***", oneIteration
'RunAction "***", oneIteration
.........
但是所调用的每个runaction中又必须重新声明变量,必须重新赋值,就是开始的几段代码
public filename
public clicktimes
filename="*********"
clicktimes=5
为了避免在每个runaction中赋值,这样做的好处是显而易见的,可以通过在主action中赋值,控制调用的每个action的变量值,减少维护代码的工作量。在网上查了一下,发现总的来说有两种办法
1、将变量的赋值给globalsheet tatalbe,然后用globalsheet作中转,再传给每个runaction中的变量,不过这样做的缺点也是非常多的:
缺点:
(1)每个runaction还是必须声明一次变量名,只是少了赋值的代码;
(2)当在其他测试任务中调用这个函数时,也必须建一个globalsheet datatable,名称还必须一样,太麻烦了!
2、相比之下,用Enviroment就要好得多,只需要在主action中声明
Environment.Value("filename")="e:\pageloadtime.txt"
Environment.Value("clicktimes")=5
然后再其他的action中使用Environment("var").value就可以了,对QTP的依赖程度低,代码复用性高
因此,我主张只要有可能,应该多用Environment对象,少用datatalbe.
此帖抛砖引玉,望大家都来指正 |
|