[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 ==

时间:2021-03-06 06:01:36

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

出处:http://blog.csdn.net/zzxxbb112


还记得在最早的第四讲中我们曾经介绍过了资源池的概念,通俗的讲就是一种静态加载函数库的方式,但是静态的加载方式往往都是靠QTP工具本身的设置来决定,因此往往没有通过脚本的方式动态的去加载函数库来的灵活。


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

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

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


实例1:

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


function q1

	msgbox "iquicktest1"

end function

function q2

	msgbox "iquicktest2"

end function

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


ExecuteFile:

'动态调用函数库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 打开函数库文件

[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 ==

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

使用ExecuteFile方式:

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

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


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

使用LoadFunctionLibrary方式:

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

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


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

[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 ==

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

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


实例3:

修改之前的函数库文件

class iquicktest
	function q1

		msgbox "iquicktest1"

	end function

	function q2

		msgbox "iquicktest2"

	end function
end class

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

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

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

[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 ==


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

[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 ==

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

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


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


[原]【软件测试自动化-QTP系列讲座 44】== 动态函数库加载的两种方式 == Rss订阅IQuickTest关于如何订阅?


作者:zzxxbb112 发表于2011-11-9 23:07:42 原文链接
阅读:1510 评论:2 查看评论