QTP Action篇

来源:互联网 发布:3322免费域名官网 编辑:程序博客网 时间:2024/05/17 01:43

Action调用与Action0

打开QTP脚本目录,我们可以看到有一个Action0目录,这个并不是我们自己写的,它是干什么用的呢?打开这个Action0目录,用文本编辑器打开scrīpt.mts可以看到一条或多条RunAction或Call RunAction
对比我们在QTP中用Keyword View查看的Action就可以看出这个结构是与之对应的,显然是与Action调用有关,记录了调用Action的顺序以及循环情况
下面我们就来分析一下QTP中Action的调用:
首先,Action的存在与被调用的关系
Action的存在和调用之间没有相关性:存在,但是可以没有调用
Action调用有两种情况,一种是脚本调用,一种是Action调用
第一种就是通过这个看不见的Action0组织脚本直接运行的Action调用
第二种就是在我们看到的Action中来调用Action

其次,我们怎么看到Action的存在和调用
要看到Action存在很容易,到Expert View,下拉框里选一下就可以看到存在的Action的内容
我们在Keyword View中两种调用都可以看到
但在Expert View中只可以看到第二种调用
再次,调用怎么修改
第二种调用可以在Expert View中添加一句RunAction ActionName来添加
但第一种调用就没法直接添加了,因为Action0是直接看不到的
可以直接改Action0的脚本内容
还有就是可以在Expert View中添加一句RunAction ActionName做成第二种调用,
再切到Keyword View,然后用拖动节点的方法变成第一种调用

另外就是用Call to Existing Action
但是只能call可复用的action,也就是要在准备调用的Action的Action Properties中勾选Reusable action
最后还要再说一下外部的调用
QTP脚本调用其它脚本的Action,只要把被调用的Action设为可复用。至于调用的方式方法等等仍遵循上述内容


'RunAction “aaa”,oneIteration:只运行一次。(参数表只走一行)
'RunAction “aaa”,allIteration:参数表每行走一次
'RunAction “aaa”,”1-4”:只运行参数表1-4行

最后,不同action

调用新action  :RunAction "Action2", oneIteration

调用copy的action,把原来的action拷贝到本地一份:RunAction "Copy of login_test", oneIteration

调用存在的action,只调用,不拷贝:RunAction "open_test [源action文件名称]", oneIteration

 

QTP中的ACTION可以调用其他的ACTION,即使不在一个脚本内。

点击insert,选择call to existing action ,这是调用已经存在的ACTION,节约了时间又提高了复用率,另外这个方法占有空间较小。被调用的ACTION必须在ACTION properties 中将reuseable勾上。

还有一种为call to copy action,这是将被调用的ACTION的对象库也一并拷贝过来,不推荐使用。

关联函数库 将函数保存到文件夹内,后缀为.VBS


一、Action的管理

QTP的Test Flow也是一个层次结构,最顶层的Test工程,在工程下面挂着N个Action,通常每个Action有自己的功能,就像C语言的main函数与一般函数。在每个Action下,可能还有一个或多个的Action被调用。这就是Action的层次,一层层调用。由此就可以看出Action之间有两种关系,举个例子:

Test Flow下挂着Action1、Action2,而Action1下挂Action3、Action4,Action3下挂Action5。那么Action1和Action2之间就是兄弟关系,而Action1和Action3是父子关系。另外还有一种特殊的关系,Action1和Action5,它们通过Action3来联系。

二、Action的拆分和合并

Action可以通过Split Action拆分,形式就有兄弟或者父子两种。父子关系就存在调用。

Action的合并有多种方式。

Call一个新的Action、Call一个已经存在的Action和Call一个存在Action的拷贝。

而每种方式又有两种模式,在Test工程的结尾调用或者在当前步之后调用。

在Test工程的结尾调用:相当于与已经存在的Action是兄弟关系,而且新的Action在Test工程的末尾。

在当前步之后调用:就是在当前插入了一句调用新的Action的代码,当前步结束就执行被调用的Action

Action调用的语法:

RunAction "Action名", 迭代次数,输入参数列表,输出参数列表

RunAction "Action3", oneIteration,num1,num2,output

三、Action的迭代模式

Action的迭代次数根据两个因素:一是调用或者设置的迭代次数:oneIteration或者allIteration或者“1-n”;二是DataTable中的数据行数。Global是全局的,作为Test工程迭代数据、每个Action又有各自的sheet。

四、Action间的参数传递

Action间的参数传递可以通过设置来实现,也可以进行参数化,在Call properties来进行设置。其中的参数传递必须要有直接的父子结构才行,如果像前面说到的Action1和Action5,它们就不能直接来进行参数的传递,而必须通过中间的Action3来实现。

五、Action间的变量访问和共享

1.       通过DataTable共享

DataTable对于每个Action都是可见的

2.       通过环境变量共享

环境变量也是Test工程的共享变量,但是个人认为要是环境变量太多,会不会难以管理?

3.       通过Action之间的参数传递

对Action的属性设置和对调用的属性设置来进行参数传递,只有有调用关系才能共享。

值得一提的是Public声明的变量并不能让Action间共享。

六、Action事务时间统计

一个小小的功能,提供对于一个事务的时间统计。

点击setting,选择RESOURCE,找到文件夹,保存。

现在就可以随意的使用函数了。

原创粉丝点击