专注于自动化测试,性能测试.......

使用VBS脚本从Exce中读取测试数据(原创)

上一篇 / 下一篇  2009-09-24 21:39:34 / 个人分类:Vbscript

0~ L(V]#BO%\F^0  这是以前为了在测试工具中方便的读取Excel数据写的脚本(一个轻量级框架的一部分)。总体思路是:利用Excel的com接口,把数据读取到字典(键值对,也就是测试字段对应测试数据)中,然后在通过键值对的key把测试数据读取出来。(这种方法虽然比较简陋,但是胜在简单易用)。下面就具体说明一下:

3n&s i^b*h B g0

uzm4O~F*t@0 首先,我们先看一下Excel中的测试数据格式,51Testing软件测试网%X%@rXe.NEN

1R[/l cB)t0Field   DataType     DataValue     DataValue 
3du4g yGJ!X0姓名     string           姓名1      姓名2
D:eJA.B;C(Z hG0性别     string           男          女51Testing软件测试网^'|P3T}2yh"vg
年龄       int            34         4551Testing软件测试网dC `I%JW+KAl"q

51Testing软件测试网7\eIYGy#LYq-u+T;y:q

第一列 字段名称

)K J$g6p|;t,v051Testing软件测试网E vr3X5`-t4N

第二列 数据类型51Testing软件测试网ha(e@1H

51Testing软件测试网/wMH's0?4bU#HD*`+eq

第三列及之后 测试数据

3KN,H-xu"fx0

2W&EZrMz0具体代码如下:51Testing软件测试网5EC U.c.S3FrEr5Y

51Testing软件测试网F(k KV[6NW'B

Dim objexcel 'excel对象
b$} _n+];fT0Dim objworkbook 'excel的workbook对象
_5aU'UM8]An"zV7km0Dim objsheet 'sheet对象51Testing软件测试网,W)At _il0bv8O
Dim objDictionary '字典对象51Testing软件测试网3B`|8g/}x-|}2?+ST7m
51Testing软件测试网jhgpI7ugrk3GW
'=========================51Testing软件测试网AY%jccF{:k$C$F
'获取sheet对象
.sGd+P+XY z4v0'sheetname: sheet名称
I}%z9f'P2_1nC N6~K0'path: 文件路径51Testing软件测试网,XB_V y1h)_U+[
'=========================51Testing软件测试网:O"O's*H(i.Ow_
Function Getexcelobject(sheetname,filepath)
c&svp~x4x051Testing软件测试网*RY:pb4^wv5mN9[
  Set bjexcel = CreateObject("excel.application")51Testing软件测试网8zv!oq6J#Y(xO
  Set bjworkbook = objexcel.Workbooks.Open(filepath)
.{W!P?_Hg:[+RD0  Set bjsheet = objworkbook.Sheets(sheetname)51Testing软件测试网8l/Jkq \ v Zg
End Function
3F`qj j0Yj7k051Testing软件测试网2o/Y mBD:i~z g
'========================51Testing软件测试网$Z2G*DlrG
'关闭excel51Testing软件测试网,e!a5Nn3q2l,h#L%l\ [
'========================
O0E&?"Zd4j!K4W`%k0
|3q0h|;f7W ?6_0Function ExcelColse()
$r3[-|:[pKp0  objworkbook.Close
_X7pI'Y7wJTuc5H0End Function 
3U5q'yTQ@;BZ051Testing软件测试网Gg0m-rJb
'========================51Testing软件测试网S)m2JH"o(qja
'获取测试字段与默认测试数据的键对数组51Testing软件测试网.r1hkv?P
'========================51Testing软件测试网4L8GQ;K.nj3R

*N ^fXT{:U9tde O0Function GetDictionary()51Testing软件测试网#foB]+q2p
  Set bjDictionary = CreateObject("Scripting.Dictionary")51Testing软件测试网Lm|/M6rp8EP
  x=251Testing软件测试网]J0TLm5Q5q3Y;H C
  Do While Not (objsheet.cells(x,1).value ="")
OkyDTg H%v-N0  objDictionary.Add CStr(objsheet.cells(x,1)),CStr(objsheet.cells(x,3))
8k*[,z7n*okL%}$MQ0  x=x+1
E8~[N8h~0  Loop 
{I5ol E:Vu0End Function51Testing软件测试网Nyrr-RfH

$i(k g5ehj5fO0'========================51Testing软件测试网,jOK'tvY*W
'获取测试字段与指定测试数据的键对数组
8F m-B F@.Ry0'========================51Testing软件测试网0G7Z1_6B!KfPC-^
51Testing软件测试网*UW,^p;Xc
Function GetSpecDictionary(y)
&^6{sws nKr0  Set bjDictionary = CreateObject("Scripting.Dictionary")
lB-G zx,@RN0TQL0  x=251Testing软件测试网X!t+R7F@ i^ C
  Do While Not (objsheet.cells(x,1).value ="")
\$b B*K a5{2`&@BDp0  objDictionary.Add CStr(objsheet.cells(x,1)),CStr(objsheet.cells(x,y))51Testing软件测试网+e)V}2G2Z
  x=x+151Testing软件测试网W3qV!r,x k,{
  Loop 
2Z*Y8FG3S0End Function51Testing软件测试网1@UG qj
51Testing软件测试网S[/_6~}6~!SZD
'=========================
,L"r`P IZ"fu S0'获取默认测试数据值
-TXQ2^i$d0'field:AUT字段51Testing软件测试网Cc/]Y"ov r
'=========================
Av5R4O ]YA?4a0Function Getvalue(field)51Testing软件测试网%^g$^6zpHcy
  GetDictionary()51Testing软件测试网/K4ON,a/A6Y%?2H_
  Getvalue = objDictionary(field)51Testing软件测试网D-oo Ywy \
End Function 51Testing软件测试网 T R)C$J6A~%`WY

Glp(q2L d0'=========================
"H G)}0x M7T;h0'获取测试数据的数量51Testing软件测试网"}4J F@ap$pDr
'=========================
.b&e$J pF#Vl7n1Fg5j3@0Function Getvaluenumber()51Testing软件测试网B:P)U a7GlX
  GetDictionary()51Testing软件测试网:q.HT[d qy
  Getvaluenumber = objDictionary.Count
6?0Xg+IDp0End Function 
Vc,n6O9L)T^0
h:^&ifGj]W0
+P G"S\K0'========================
lMD ]Y3V8p(? p0'获取指定列数据,field为字段名,colnumber为列值51Testing软件测试网{5Ewo+LQj
'========================51Testing软件测试网9a@+^'^ ?`
Function Getspecvalue(field,colnumber)51Testing软件测试网E#C"[1r,d*n
  GetSpecDictionary(colnumber)51Testing软件测试网)q Z'bQ%| Nn^'W
  Getspecvalue = objDictionary(field)51Testing软件测试网4`2[R se5z6g&D'_
End Function51Testing软件测试网H-k_Ty,E fd
51Testing软件测试网|lCjlz$B%l j
51Testing软件测试网2V qu \-Lj|
如果想读取默认测试数据,也就是读取第三列,需如下进行:

\c+Fe rq~3j0

'xjO2m O+ro0Call Getexcelobject("sheet1","E:\TestData\查询.xls")
e4i|8C:r8VN:JZ%?0WScript.Echo Getvalue("姓名") 51Testing软件测试网-N$y2T |enAx m*w
 51Testing软件测试网cS7ArJ9z5e*^,z
51Testing软件测试网"x%D8_)F7{9G{;Z
如果想读取任意列的测试数据,需:

_ a:qm z wOtB0

;YmV'U*^f~1m0Call Getexcelobject("sheet1","E:\TestData\查询.xls")
SV:A(vdX(O0WScript.Echo Getspecvalue("姓名",4) 

R,d"yQ,M051Testing软件测试网.mI5i!f-~/h2I8| Y

e.@EL-I+{6cb{X z(P[u051Testing软件测试网J0]'CK!A(~$ja$f


.]IB0z'le+b051Testing软件测试网"`h5V&Oh,p

51Testing软件测试网8qB!kN;l7t0c

51Testing软件测试网_e6G3HF^4N
51Testing软件测试网1l7r ceH2g
51Testing软件测试网 A(~.u.p1JX+A3m


TAG: VBScript vbscript

搞测试的男人 引用 删除 Godkingman   /   2012-03-15 13:24:27
5
 

评分:0

我来说两句

wxf_xsfy

wxf_xsfy

自动化测试的拥簇者,善于自动化测试的框架和工具开发,TIB工作室核心成员

日历

« 2024-04-16  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 381271
  • 日志数: 79
  • 图片数: 1
  • 文件数: 1
  • 书签数: 3
  • 建立时间: 2007-09-19
  • 更新时间: 2018-01-30

RSS订阅

Open Toolbar