QTP参数化问题小结

      最近本人正在研究QTP,遇到一个参数化的问题,在此总结下。

     需求:执行的是飞机订票系统,录制完一次订票之后,导入航班的Excel表来实现订票的循环,目的就是实现登录--->订票---->提交---->订票--->提交.......一系列循环

     刚开始实现时, QTP运行之后出现的情况就是 登录--->订票--->提交---->登录---->订票--->提交--->登录....... 参数化的对象的变量值保存在DataTable的Globle Sheet中,而test->settings->run中应该是默认选中的run on all,这样每次运行时,所有Golable中被参数化的记录全部运行一次。

发现这个问题后,将之前录制的脚本实行了分割,分为login_Action,order_Action,Logout_Action, 在splict Action时,选择的Action的方式为Nested,splict Action 后,Main_Action下的专家视图的代码为:

RunAction "login_Action", allIterations

RunAction " order_Action,", oneIteration

'RunAction " Logout_Action ", oneIteration

然后再对Order_Action中的订票的日期,出发地,目的地进行参数化,参数化到DataTable中的Local Sheet,同时删除之前订票的日期,出发地,目的地参数化到Golable Sheet中的记录。然后选择关键字视图下的test flow,然后选择其下的Action(Main),然后右击选择Action Call Properties,弹出窗口,选择Run all rows.然后保存,运行时,参数化中的记录只执行了首行记录,Local Sheet中的第二行以后的记录没有执行。郁闷了,到底道问题出在哪呢?仔细分析了一下,该脚本虽然已经分割Action,但是采用的是Nested折叠式,导致test flow下的只有Main这个Action,所有被分割的几个Action均是被Main这个action调用的。这样的话,执行时,就不可能登录一次,订票N次,退出一次,因为 Global的行数小于Local的行数,Action执行不到大于Global行数的数据。

 

Global Local Sheet有以下区别

  1. Global Sheet 是一个全局变量,有几行数据,程序就执行几次
  2. Global Sheet 这个全局变量受 Data Table iterations控制
  3. Local Sheet 是一个局部变量,不受 Data Table iterations控制(无论有多少行数据,它只运行一次)
  4. Local Sheet 这个局部变量受 Action 的 Action Call Properties 设置控制
  5. Global 和 Local 之间的逻辑规则
  • Global(设置为Run on all rows),Action(设置为Run one iteration only)
  1. 双方都具有相同行的测试数据,此时Global和Action的每行都要运行且同步运行
  2. Global的行数大于Local的行数,当Action执行到最后一行后,Global以后所执行的行数,Action都用最后一行数据去补
  3. Global的行数小于Local的行数,Action执行不到大于Global行数的数据
  • Global(设置为Run on all rows),Action(设置为Run on all rows)
  1. Global执行一行,Action执行所有行

故将分割的模式改为:Independent of each other,这样,分割后,test flow下有以下几个Action:Login_Action,order_Action,Logout_Action.,然后对order_Action 右击点选Action Call Properties,弹出窗口,选择Run all rows.其他Action不做这样的操作,这样order_Action的Local Sheet中参数化的记录将会被全部执行。至此,该参数化问题成功解决。

转载于:https://www.cnblogs.com/hanxuechenfeng/archive/2012/09/10/2679395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值