路漫漫其修远兮,吾将上下而求索

watir的测试用例

上一篇 / 下一篇  2009-12-14 14:33:42 / 个人分类:Ruby_Watir

I think this http://www.ibm.com/developerworks/cn/opensource/os-cn-watir/index.html is very useful link.

运用 Ruby 单元测试框架来管理和调用测试用例

Ruby 提供了完善的单元测试框架。在 Watir 程序开发中,测试人员可以通过继承该框架,很方便地编写自动测试用例以及测试用例集 (Test Suites) 。以下是一些在 Watir 程序开发过程中常用到的类和模块

  • Test::Unit::Assertions,该模块提供了多种断言 (Assert) 方法,可用于测试结果的验证,如操作对象的状态的判定(如页面某对象是否存在,是否可用),或者消息显示是否与期望值匹配等
    • assert($ie.area(:alt, 'Table Buttons').exists?)
    • assert($ie.radio(:name, "box1").enabled?)
    • assert_match(test.html/, browser.link(:class_name, 'test').href)
    • assert_equal( ie.text_field(:id, "text2"), "Hello World" )
  • Test::Unit::TestCase 定义了测试用例类,它包括两个非常有用的公共方法:setup(), teardown(),它们分别会在每个测试用例启动前和运行后被调用。所以 Setup() 通常用于准备测试环境和测试数据,如打开 IE 窗口,登录应用,打开数据文件之类操作;而 teardown() 则用于释放资源和还原测试环境,如关闭 IE 窗口,退出应用等。除此之外,用户可自定义其他测试用例方法,只要方法名遵守一定的命名规则,即以“ test_ ”为前缀,在程序运行时测试用例就会按照方法名的字母排列顺序被自动调用。比如在下面的样例代码中,方法被调用的顺序为:

    图 12. 方法被调用的顺序
    方法被调用的顺序



    清单 2. 测试用例调用
    require  'Watir'                                       # 引入 Watir 库
    require 'test/unit'                               # 引入 Test::Unit 库
    class TC_MyTest1 < Test::Unit::TestCase         # 继承类 Test::Unit::TestCase 
    include Watir::Exception 
    include Watir::ScreenCapture 
     def setup 
          getEnvInfor ( ‘ Env1 ’ )                      # 获取环境信息
          if ! defined? $logger                     # 初始化日志
          		 $logger = LoggerFactory.start_xml_logger(FILE_PREFIX)
          		 end
    			if !defined? $screen                      # 初始化截屏对象
          		 $screen = Watir::ScreenCapture.new
          		 end
    				if !defined? $browser                 # 初始化 IE 浏览器
       $browser = Watir::IE.attach(:url, "https://localhost:9043/ibm/console")
          		 end
          		 login($USERNAME, $PASSW0RD)                    # 登录应用
     end 
    
     def teardown 
        logout()                                      # 退出应用
        $browser.close if defined? $browser             # 关闭 IE 浏览器
     end
     def test_testcase1           # 测试用例 1 
     $logger.log( “ Test Case 1 ” ) 
     $browser.button(:type, ‘ submit ’ ).click 
          ... 
     end
     def test_testcase2    # 测试用例 2 
     $logger.log( “ Test Case 2 ” ) 
     $browser.inputfield(:id, ‘ j_username ’ ).click 
     ... 
     end 
    
     end

  • Test::Unit::TestSuite 为测试用例集,用户可以将逻辑相近的测试用例添加到某测试用例集中,当运行该集合时,其中的每个测试用例会被按序调用。
    require 'test/unit/testsuite' 
     require  'TC_MyTest1' 
     require  'TC_MyTest2'
     class TS_MyTests
      def  self.suite 
        suite = Test::Unit::TestSuite.new               # 创建一个测试用例集实例
        suite << TC_MyTest1.suite                         # 将 TC_MyTest1 加入测试用例集
        suite << TC_MyTest2.suite                         # 将 TC_MyTest2 加入测试用例集
        ...
        return  suite
       end
      end 
    	 Test::Unit::UI::Console::TestRunner.run(TS_MyTests) # 运行测试用例集

    • Test::Unit::UI::Console::TestRunner 用于运行测试用例或测试用例集,
    • Test::Unit::TestResult 用于结果报告,所提供的接口可用于统计测试用例中运行成功 , 失败 , 出错的个数。在 Eclipse 输出窗口的 Test::Unit 栏,我们可以看到测试用例的运行结果。


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-15  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 40563
  • 日志数: 76
  • 图片数: 2
  • 建立时间: 2007-11-02
  • 更新时间: 2011-08-13

RSS订阅

Open Toolbar