自动化测试中调用DLL

上一篇 / 下一篇  2009-12-13 17:46:53 / 个人分类:自动化测试

K` h{ Kg0首先说说自动化测试调用DLL的作用吧:
6iJ"^8_$A_v8S.C0写DLL可以将通用功能进行封装,该DLL可以被任何自动化测试工具使用,只要支持DLL即可,另一个目的是保护版权51Testing软件测试网eY4hO/V[N

51Testing软件测试网2go3D!o*[M

下面针对QTP和开源测试框架watir + ruby中调用DLL分别说明:51Testing软件测试网)[ M1a[}u

'MfM'x9JwI0Ruby

#M2T)]_`A)u @(y'a051Testing软件测试网I f oX^!B1zRq$H

在ruby的开源项目中,Win32Api这个gem可以实现我们需要的功能。通过以下方法 ,我们就可以调用外部dll中的函数。51Testing软件测试网?M` vq6s)Z

ym+GfM0Win32Api.new(dllname, proc, import, export)

0tbr3a$}0

xnLR Ek$C0参数说明

8sy7_Knh)`0

Fhm$g}/k0dllname:dll文件的名字,如果想只写dll的名字,可以将dll放到system32目录或者当前目录下,或者写上dll文件所在的路径

)YqH^u6FP*Z0

Y&|P|G!T0proc: dll中函数的名字

!NA'X[CD#n051Testing软件测试网{"tnmiB0ZPy%~

import:函数传入参数的参数类型,其中 "p" 对应指针,"n","l"对应long,"i"对应int,"v" 对应void,如果有多个参数,可以通过 ["p","n"]数组的方式来实现,其中置为nil可以表示没有参数51Testing软件测试网hH"g PM*_f

51Testing软件测试网 |Wu3O7[s;f

export:函数的返回值类型,参数类型同上

"d9\(Q%GM7B8]051Testing软件测试网LZ\Sl_/mG

Win32API#call([args ...])

Fb#{Bm6N.g li051Testing软件测试网D ynCH*tW

调用dll中的函数,参数和返回值应该与new申明中的一致,如果返回一个指针,需要事前初始化,否则可能会有内存溢出问题。

Gg&r r!k0

)]~G9y)WY/e0例子:51Testing软件测试网K+Hl{3z EQ

+jB;J9z p j]0有个dll的头文件的申明为:51Testing软件测试网!A#~&}6U e*vL$jw

8[\ k\B.I-p O\0extern "C" long PASCAL EXPORT BMPToJPG(char *jpg,char *bmp);51Testing软件测试网+W I4}VPk
那么在将指定的dll文件放在当前目录,ruby代码如下51Testing软件测试网#?&J6H;|+l%x }i4Q

51Testing软件测试网,`5E/NnK

require 'rubygems'51Testing软件测试网r _;Vpp2BxT

51Testing软件测试网 Nok9[:wz

require 'Win32Api'51Testing软件测试网C8H9^7M.? T-O;l

`)i7@DS ?\0JPG=Win32API.new(File.dirname(__FILE__)+"\\JpgDll.dll","BmpToJpg",["p","p"],"l")51Testing软件测试网%Awjhq g

51Testing软件测试网2l p7jQ/C#}H

JPG.call("D:\\1.bmp","D:\\1.jpg")51Testing软件测试网Xz3VB~@$r
 
!S~0]9xg~0执行上述代码后,就能把D盘下的1.bmp文件另存为 1.jpg文件

a-Y'l!BR0

!Xt7ih1_0 51Testing软件测试网#~KC%[\z:Z]KH.g

51Testing软件测试网1[o@{S| D&y8B3f-U

QTP

2H,iQ~ [0

A ^,N&]Xz0QTP拥有自己的.NET Factory接口,以调用.NET生成的DLL,也可以使用Extern.Declare来进行外部的DLL的访问。51Testing软件测试网XwK&G!@e7Y[

51Testing软件测试网c8IV9^(k

语法:51Testing软件测试网-r&q V)X'hiB,Y-O

Extern.Declare(RetType,MethodName,LibName,Alias[,ArgType(s)])

u-[$F pw\l*Vh)n?F0

参数说明51Testing软件测试网;q?fJeKz8e

RetType: 方法返回值的类型

Y@#pv(j0

MethodName:调用DLL文件中的某个方法的方法名

5O"Ck Eld0

lhl-Q:O |M+Wn*Y0LibName:DLL文件名

B EY7z,[051Testing软件测试网 nn5Axa5Erk @

Alias: 别名,当别名为空时,方法名和别名一样(此参数通常为空)

L+V1GTC$h s^7`051Testing软件测试网H'BQhj&o,C

ArgType(s): 传入的参数

.p L_iq9OE;R0

yX:vi#bB}4B s@!D n0例子:51Testing软件测试网+p:D,}xS,}dV

;Kf/ODj"B0]0Extern.Declare micInteger,"TuxCALL","D:\AutomationTest\Lib\MyDll.dll","",micString,micString51Testing软件测试网*J:CbY\\A

51Testing软件测试网 J+~ X9~WT!PrX9m

Msgbox Extern.TuxCALL("A","B")51Testing软件测试网.rim/XI J.q


TAG: 调用dll 自动化测试 调用DLL

FISHY'S TRIBE 引用 删除 fishy   /   2009-12-14 14:43:11
您好,我是51Testing软件测试网的编辑,您的本篇博文被推荐至51Testing软件测试网首页发表:http://www.51testing.com/html/83/n-199983.html
感谢您关注并支持51Testing博客,期待您更多的优秀原创博文。
 

评分:0

我来说两句

日历

« 2023-07-11  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 45116
  • 日志数: 47
  • 建立时间: 2009-09-03
  • 更新时间: 2010-06-10

RSS订阅

Open Toolbar