自动化测试中调用DLL

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

+S|RS0v"de0首先说说自动化测试调用DLL的作用吧:
*o;?].ewyP0写DLL可以将通用功能进行封装,该DLL可以被任何自动化测试工具使用,只要支持DLL即可,另一个目的是保护版权

M#n/Hsg}Oa0

.C&o"]&xP ] [0下面针对QTP和开源测试框架watir + ruby中调用DLL分别说明:

D ~F4K},o4j051Testing软件测试网~:[;N0v,yEA j](`

Ruby51Testing软件测试网@ cQ7LR9^

0n#K\%P Mx%t%Z0在ruby的开源项目中,Win32Api这个gem可以实现我们需要的功能。通过以下方法 ,我们就可以调用外部dll中的函数。

8A4NJU"bU-p0

{V!` a S#U7RX0Win32Api.new(dllname, proc, import, export)51Testing软件测试网7^3[&} Vt8K#D

51Testing软件测试网'pbB p[0|.g:S G

参数说明51Testing软件测试网?$OR"FZ#eOz qV;I

51Testing软件测试网X$~ij3F4y

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

y n},wg2uY0

(o1t9o ec0proc: dll中函数的名字51Testing软件测试网1uZ4oqK;K;Y!m

7P kNG(@$|ZV0import:函数传入参数的参数类型,其中 "p" 对应指针,"n","l"对应long,"i"对应int,"v" 对应void,如果有多个参数,可以通过 ["p","n"]数组的方式来实现,其中置为nil可以表示没有参数

j_+Xt1uE051Testing软件测试网9B+Y;X2a8V;Tm~7z0v

export:函数的返回值类型,参数类型同上51Testing软件测试网 m1Y8]9b"[cDH1O9E

5hv#{_y;T`0Win32API#call([args ...])

Y4ORN#uhb2H^0

SsW1oP6Z!Dl\X0调用dll中的函数,参数和返回值应该与new申明中的一致,如果返回一个指针,需要事前初始化,否则可能会有内存溢出问题。51Testing软件测试网.O5D!_0t&bQ(VP

51Testing软件测试网.bL?;x.{*R~ Whh W

例子:

7sbJ,C5|~"l#b"k0

mGld'DK!AA0[0有个dll的头文件的申明为:

Yj p&a#r0

Glj5V4f? i;Q&[f0extern "C" long PASCAL EXPORT BMPToJPG(char *jpg,char *bmp);51Testing软件测试网)xI,x qOC|C:X
那么在将指定的dll文件放在当前目录,ruby代码如下51Testing软件测试网z a DcO N]sl!k

51Testing软件测试网2U!yj4Dl!l'F9a\5F

require 'rubygems'51Testing软件测试网5@w3~9Mp&O dj

/}&m R ?v/gY/w0require 'Win32Api'

BRBIi/M5E1rQ051Testing软件测试网TiDc.oh6`l~

JPG=Win32API.new(File.dirname(__FILE__)+"\\JpgDll.dll","BmpToJpg",["p","p"],"l")

k9P'i,O VKL0

1lzu"n6v"l0l j0JPG.call("D:\\1.bmp","D:\\1.jpg")
th5ns'`;R(|0 
G Q0KJm QO,Sy6t'p0执行上述代码后,就能把D盘下的1.bmp文件另存为 1.jpg文件

p?3LS-CW9t4V#~r0

gmr1?P,l0 

my4l.{ xN:j0B%c$a0

n4wf&{{"vSw9k0QTP

,j$B6Qz?P K#b051Testing软件测试网Y b:AHGy)t

QTP拥有自己的.NET Factory接口,以调用.NET生成的DLL,也可以使用Extern.Declare来进行外部的DLL的访问。51Testing软件测试网{\(vvz2b}

51Testing软件测试网F%u*i Y/a9GHz

语法:

b KP8I v'^d1x0

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

z8Bc\!L9R n*|*[4J0

参数说明

VknO[0

RetType: 方法返回值的类型

s(z(ZM0F6aq0

MethodName:调用DLL文件中的某个方法的方法名51Testing软件测试网 af#{(vS

0_(|G*W-fi(Td|0LibName:DLL文件名51Testing软件测试网'i_I'Z$d,vD sM2a

51Testing软件测试网cU/alW3tP Z

Alias: 别名,当别名为空时,方法名和别名一样(此参数通常为空)51Testing软件测试网 h5B&CZ/[wv m8wd,Uy

51Testing软件测试网H*q0w4}LM1B3n!P/f7x"w

ArgType(s): 传入的参数

ATW5D?r&m0

w;]7s\4B"cM? z0例子:51Testing软件测试网j/Q~v-ST,g

51Testing软件测试网1P H `v7^'YQ S

Extern.Declare micInteger,"TuxCALL","D:\AutomationTest\Lib\MyDll.dll","",micString,micString

]#C!}JIpj0

nz h8k6F*b x4r~0Msgbox Extern.TuxCALL("A","B")51Testing软件测试网pru#us3p%W


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

我来说两句

日历

« 2024-03-23  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

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

RSS订阅

Open Toolbar