== 动态函数库加载的两种方式 ==

本文对比了QTP中两种动态加载函数库的方法:ExecuteFile和LoadFunctionLibrary。通过实例展示了两者在调试支持和类调用方面的差异,帮助读者根据实际需求选择合适的方式。

作者:zzxxbb112
时间:2011/11/9 版权所有,侵权必究。

出处:http://blog.youkuaiyun.com/zzxxbb112


QTP函数库动态加载两种方式:

1. ExecuteFile - 动态调用VBS文件方式

2. LoadFunctionLibrary  动态调用函数方式 (QTP11最新加入的新函数)


实例1:

本例准备一个vbs函数库文件在c盘根目录,定义了两个函数,文件内容如下:


 

Function q1
msgbox "iquicktest1"
End Function

Function q2
msgbox "iquicktest2"
End Function

接着我们通过qtp的两种动态的调用方式分别来调用此函数库

ExecuteFile:

dawadw


 

'动态调用函数库ExecuteFile方式
ExecuteFile "c:\iquicktest.vbs"

'调用函数库中的q1方法
Call q1



LoadFunctionLibrary :

 

'动态调用函数库LoadFunctionLibrary 方式
LoadFunctionLibrary "c:\iquicktest.vbs"

'调用函数库中的q1方法
Call q1

分析:

当你在执行以上两种动态调用方式之后你会发现这两个执行结果是一模一样的,你完全看不出它们之间的区别在什么地方。那么 它们之间的区别究竟在哪里呢?


ExecuteFile VS LoadFunctionLibrary ?

让我们来看几个例子:

实例2:

我们在QTP中使用快捷键Shift + Alt + O 打开函数库文件


在打开之后在如图位置设置断点,接着回到test主脚本编辑区

使用ExecuteFile方式:

  1. '动态调用函数库ExecuteFile 方式  
  2. ExecuteFile "c:\iquicktest.vbs"  
  3.   
  4. '调用函数库中的q1方法  
  5. Call q1  


还是刚才的脚本同样执行一遍,你会发现使用 ExecuteFile方式对于函数库文件调试无效

使用LoadFunctionLibrary方式:

  1. '动态调用函数库LoadFunctionLibrary 方式  
  2. LoadFunctionLibrary "c:\iquicktest.vbs"  
  3.   
  4. '调用函数库中的q1方法  
  5. Call q1  


把ExecuteFile改成LoadFunctionLibrary后,执行脚本,你会发现可以正常的调试


脚本自动停留在了设置断点处。

那么第一局 LoadFunctionLibrary 以 1比0 暂时领先对象 ExecuteFile


实例3:

修改之前的函数库文件

  1. class iquicktest  
  2.     function q1  
  3.   
  4.         msgbox "iquicktest1"  
  5.   
  6.     end function  
  7.   
  8.     function q2  
  9.       
  10.         msgbox "iquicktest2"  
  11.   
  12.     end function  
  13. end class  

Test主脚本区中输入以下脚本:

  1. '动态调用函数库ExecuteFile 方式  
  2. ExecuteFile "c:\iquicktest.vbs"  
  1. '实例化函数库中的iquicktest类  
  2. Set qtp = new iquicktest  
  1. '调用iquicktest类中的q1方法  
  2. qtp.q1  

结果: 脚本执行完毕后顺利实例化函数库文件中的类,并调用了q1方法



而如果使用LoadFunctionLibrary方式则会报错:


分析:说明LoadFunctionLibrary根本不支持函数库中的类,因此此方法本身只能读取到函数,从名称上就能得知。

这一局是ExecuteFile赢了,最终双方还是打成了平手。


总结:本文通过简单的例子和大家一起分析了两种动态调用函数库方式的区别,其实两种方式没有谁好谁坏,只有适合和不适合,如果你的测试设计过程中需要使用到类,那么推荐你使用ExecuteFile方法,但是如果你使用的是纯函数库并没有类,那么LoadFunctionLibrary的调试功能能让更快的定位错误。



转载于:https://www.cnblogs.com/sirrah/archive/2011/11/10/2349120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值