诚招英才(长期):高级测试开发工程师、测试架构师,C++,java,ops; 联系方式:linhan@taobao.com msn: niuxvampire@hotmail.com

(原创)基于WATIR+RAILS+STAF的自动化测试框架——测试用例脚本

上一篇 / 下一篇  2008-03-25 11:11:22 / 个人分类:自动化测试技术

51Testing软件测试网`/^,n&F\

上一节  从头阅读

I Au,K/Dm|2@7gg0

Rg6?)M4n3Au;}!O0一个测试用例脚本的例子:

bp#a[0SZ0

y'T#pi\[s0=begin
W g/g-^N `4L D,O0Author: Nick Wang51Testing软件测试网+O;{;}e2A(@[H\v
Filename: TestXXX.rb
,W-U5|/i)Q5t5ui0Type: TestCase51Testing软件测试网@G/Go3h+E5s9{H9@
Descrīption: xxxxxxxx51Testing软件测试网w.`!AjC.Y%cHc
CreateDate: xxxx-xx-xx51Testing软件测试网2_(J(J+F7QDY
ModDate: xxxx-xx-xx
x"L|BG-u!V$_l a0=end

]'K2fq'Ca-D#m0

UF8@ H c]7}ya0require 'watir'51Testing软件测试网1`-aB.}c(a
require $pre+lib相对路径
Ci:G)DAa][$Y9~0include ...
Wzu+|6QG'I1}\k0require $pre+测试驱动文件路径51Testing软件测试网0V8dvdJq
require 'uri'
!Un%A`7g0require 'iconv'

7wz*M)S!aL fa6k%v051Testing软件测试网%H!~+?(^3H#o;f1x6H&y

#创建一个测试用例类
s yJ oo0class TestXxx
i(`$DH C"n M;M0  def initialize(url=$domain+'/s?p=ruby&v=blog',......)
4p(ERvoW0    #初始化实例变量
!c/O,tt)\U[!U,j#H0    #用例名称51Testing软件测试网l1BBOmHA5{\^
    @caseName='Xxxx'51Testing软件测试网1X1yc)c&I1hX1nd
    #初始化一个ie对象
+D;zD?3F8n0    @ie=Watir::IE.new51Testing软件测试网1fRS{cC IO
    #其它需要用到的实例变量51Testing软件测试网/aI(F9u_-er
    @query=query
E I o4H I9W0    @url=url
\9V4i,@q3d0    各种错误信息等
4sRotg"D$Q0    .....51Testing软件测试网2V"dU|9l0F&U,A
    #初始化一个ie对象
4G%f!Z_L7o5G3P0    @ie=Watir::IE.new
x_\B Evu0  end
n-v:}#I.v0\ Sr$a9c0 
-gJ|!BSbv2`0  #执行函数
V9e0w R*t fS |0  def main
?LI1@Qi0b0    begin51Testing软件测试网A'VsETM
      #path151Testing软件测试网 `-`!p9N3B8fk0oF
      调用测试驱动,模拟页面gui操作51Testing软件测试网8C8cX&x-mv!KE
      #path2
.{jKO4s)pcXN'a:z0      直接写入模拟页面gui操作的代码(对于web页面来说,通常是通过watir实现)
E*x]o-|0     
K3P8\!M*I*_ K9H@0      #判断页面gui操作是否成功
/E^-@!zC6cq"^a4^K0      if gui操作执行成功51Testing软件测试网.ZB#dD Y*^u['~!}
        #验证用例是否通过51Testing软件测试网 fs_,e^P7A$sI+P(AQ
        if 验证条件
/B_qLdjp0          puts 'OK!'51Testing软件测试网'r@5@q]d6k
          #写测试结果到$results中,此$results在测试套件类中定义51Testing软件测试网Nuxr)w
          $results+=[[@caseName,'Succeed','----------------',formatTime()]]  
Fa#aL.f{F0        else
1t*m8f%jCr-~%W0          puts 'Failed! '+错误信息
-\-GGf m'W&|0          #写测试结果到$results中
B9yx+j6fg-{'fu0          $results+=[[@caseName,'Failed',错误信息,formatTime()]]
(w7L^V0vn3lyk0        end51Testing软件测试网 H-P$l!B9nU8S
      else
!U7EmJ*f B0        puts 'Failed! '+错误信息51Testing软件测试网b-X(Tvfm^'{9X2Q
        #写测试结果到$results中
3n*W-?n1{L)M_0        $results+=[[@caseName,'Failed',错误信息,formatTime()]]       51Testing软件测试网Coq'sF
      end
9Gm;[d/U?&BV0    rescue => detail51Testing软件测试网(H:i5_I'h9X:o
      $logFile.puts detail.message51Testing软件测试网;l~E Y rl$EA}
      $logFile.puts detail.backtrace.join("\n")51Testing软件测试网*YV3JhUA^
      #写异常信息到$results中51Testing软件测试网3GO4iDH,N:kc
      $results+=[[@caseName,'Failed',detail.message,formatTime()]]
7`1I x+LZ0      return 051Testing软件测试网qE-j3i0p r
    ensure51Testing软件测试网%N*_m5p Y9} o
      @ie.close51Testing软件测试网(N:C{"C"hr
    end51Testing软件测试网s\bM szL
  end51Testing软件测试网A(X4OP R-l%AP
end51Testing软件测试网 {,N|"M&|.n

~$x{ Ob z;[ q;x C*m0#实现测试用例脚本的独立运行51Testing软件测试网:}3Z$_ o,e Xm%l.mK
#t=TestXxx.new51Testing软件测试网WvIGWV NmW
#t.main51Testing软件测试网3AF(l1D8zx"R8]ho

51Testing软件测试网7]S's5\}Jq$T4Em

测试用例脚本中主要完成模拟gui操作,验证结果,测试结果追加几个功能,其中比较重要的是$results+=[[@caseName,'Failed',detail.message,formatTime()]]
2H4b,v5K@0同一测试计划(测试套件)会调用多个测试用例,每一个测试用例的结果都是通过向$results数组中追加一个数组的方式来收集到一起的。

,YM~#O7@ W"cE,`0

-kv*b hA*ES0 51Testing软件测试网W.jl?wrA3g

下一节51Testing软件测试网:?Y W^ K5d3v J

-[h5se O8DoIt0

TAG: 自动化测试技术

最后一公里 引用 删除 rcpp   /   2008-04-14 15:00:52
3
很欣赏,其实目前我们也在评估,想做基于watir的自动化测试框架
 

评分:0

我来说两句

Open Toolbar