QTP进阶使用2
上午实习任务:
- 新建一个Test以call existing的方式调用自己或同事的action,实现对飞行预订票系统登录一次,订票5张,要求对订票人名字、航班日期、起飞地点、到达地点、票数进行参数化
- 已知登录、订票、传真、退出分成4个Action, 新建一个Test实现飞行预订票系统测试,要求:
- 登录、退出各一次,
- 订票2次,2次订票的人、日期、起飞、到达地点都不同,
- 每订一次票发一个传真, 要求每次发的传真号不同
注意事项
1、订票时要录制“新建订单”操作,不然多次订票时会被识别为修改
2、各单元分别录制时,注意实现局部参数化,以保证调用后能修改数据
任务一
截图如下(存储位置:…7.27 / Test1)
任务二
1、如果采用兄弟结构建立4个action,其中订票和发传真参数化为2组数据,运行后会形成:
登录 --> 订票1 --> 订票2 --> 发传真1 --> 发传真2 --> 退出
的现象。
2、如果传真为订票的子action,形成如下的结构,其中,订票为运行2行,传真为运行1行。则有:
登录 --> 订票1 --> 传真1 --> 订票2 --> 传真1 --> 退出
还是不符合。
3、若在2的基础上,把传真改为运行2行,则有:
登录 --> 订票1 --> 传真1 --> 传真2 --> 订票2 --> 传真1 --> 传真2 --> 退出
4、若在2的基础上,把订票变成全局参数,则有:
登录 --> 订票1 --> 传真1 --> 退出 --> 登录 --> 订票2 --> 传真1 --> 退出
5、若在3的基础上,把传真变成全局参数,订票改为运行1次,则有:
登录 --> 订票1 --> 传真1 --> 退出 --> 登录 --> 订票1 --> 传真2 --> 退出
由此可知,不能有全局参数,否则全部的4个action都会运行相应的次数。
如果新建一个空action2,仅把订票和传真包含在其内,对action2进行参数化,运行2次呢
形如:
action登录
action2{
action订单
action传单
}
action退出
这就会遇到一个问题,因为action2是空的,是无元素的。
我们需要把register和fax的参数都传进去。
这个方法时间成本较高。
有了传参的了解后再换回2的思路:
action登录
action订单{
action传单
}
action退出
这时我们只需把“传单”中的一个fax参数传出来,相比于上面的想法参数少了很多,可以节约时间成本。
关于传参的方法可看下面的介绍。
我们打开一个两位数加法器的test,对其进行拆分
第一部分为“open”,仅记录打开的动作
第二部分为“other”,记录计算和关闭
可以发现,拆分完毕后,在“open”中多了一行代码
RunAction”other”,oneIteration
这是调用的代码
回到飞机订票系统。
把光标停在“订票”的最后一行,然后加入父子关系的“传真”action
注意这里如果不停在该行,可能会出现不能选择父子关系的情况
这也可以解释为什么拷贝过来的action可以设置父子关系但是调用的不行
因为调用的action代码是无法修改的,自然无法加入那一行,不能调用。
右键“传真”action,打开其属性,选择[parameters]
加入父子调用所需要的参数fax
我们打开帮助文档查看
在“索引”搜索runaction
可以找到如下一段话
The following example runs one iteration of the action, supplies a string value of MyValue for the input parameter, and stores the resulting value of the output parameter in a variable called MyVariable.
RunAction "Action2", oneIteration, "MyValue", MyVariable
我们对飞机订票系统的test进行相应的改造
把调用代码加上参数,为
在数据表中加入一列
切换到传真action页面,对传真号进行设置
可以发现,参数类型多了一项“Test/action parameter”
选择,确定
发现代码行有如下变化
此处也可直接在代码区进行修改
运行一下, 功能实现
同理,之前提到的空action2包含订票和传单的test也是同样的处理。
总结一下就是:
(1)在register的action属性中添加对应的5个参数
在fax的action属性中添加对应的1个参数
(2)在action2的数据表中添加2行6列的值
(3)修改action2处调用的代码,传参
(4)把register和fax对应的参数类型进行修改
(5)修改action2的运行属性为运行所有行
此处不再截图,具体图片详解可见上。