Windows下Ruby+Watir自動化測試的環境搭建及資料讀取_ruby專題

來源:互聯網
上載者:User

Watir的使用環境搭建

1、watir環境工具安裝包:

1) ruby186-26.exe下載地址:http://files.rubyforge.vm.bytemark.co.uk/rubyinstaller/
2) watir-1.5.2.gem下載地址:http://rubyforge.org/frs/?group_id=104&release_id=28016
3)rubygems-update-1.3.7.gem下載地址:http://rubyforge.org/frs/?group_id=126

2、firewatir環境工具安裝包:

1)步驟1中的軟體包
2)Firefox2.0下載地址:http://www.hacker.cn/Get/gjrj/06102608545293311.shtml
3)firefox外掛程式:firbug1.05,JSSh。Jssh下載地址:地址
4)Firewatir-1.1下載地址:http://rubyforge.org/frs/?group_id=104&release_id=28017

3、watir安裝
1)安裝ruby186-26.exe;
2)升級gem,把gem包拷貝到ruby安裝目錄,在命令列輸入命令:gem install rubygems-update 1.3.7.gem(gem包名)。提醒:安裝完後進入ruby目錄:lib\ruby\gems\1.8\gems\rubygems-update-1.3.4,點擊這個檔案夾中的檔案:setup.rb,升級gem即可
3) 安裝watir包,把watir包拷貝到ruby安裝目錄,使用命令列進入ruby安裝的目錄,輸入命令:gem install watir-1.5.2.gem。
4)使用命令gem list查看是否安裝成功。

4、安裝firewatir

1)安裝firefox和firebug,Jssh外掛程式,安裝方法:開啟firefox瀏覽器,點擊“檔案”/“開啟”,選擇外掛程式檔案名稱,安裝即可。

2)安裝firewatir,使用命令列進入ruby安裝的目錄,輸入命令:gem install firewatir-1.1.gem

5、測試firewatir是否安裝成功?

使用命令列進入firewatir安裝路徑下(\ruby\lib\ruby\gems\1.8\gems\firewatir-1.1),進入unittests檔案夾,輸入命令:ruby mozilla_all_tests.rb,如果可以正確執行程式,說明安裝正確沒有問題,到此可以開始自動化測試開發的旅程了。

6、在安裝watir過程出現'nmake' 不是內部或外部命令,也不是可啟動並執行程式或批次檔。

使用命令

gem install --local watir-1.5.2.gem 

就安裝成功了!


讀取各種資料來源中的測試參數化資料
自動化測試時常用到的技術就是參數化,不支援參數化的測試架構是痛苦的。QTP自身本來就有,但是類似ruby的watir,以及selenium等都不是天然支援的,因為這些個架構只提供了最基礎的自動化驅動類庫,而驅動以外的執行管理、資料管理等又是一個課題。大部分的selenium和watir類似項目用的執行架構都是單元測試的架構,天然也不支援參數化。現在只有junit4版本支援參數化,以及testNG預設支援多種參數化。如果你開始項目的話可以優先考慮相容這些類似架構的語言來做自動化。
watir雖然本身不支援參數化,ruby的單元測試也不支援,但是參數化也要做啊,沒辦法只能想想變通的法子。所以單獨寫了一個參數化類別,來補充一下參數化功能的不足。其工作方式是提供統一的測試資料來源的資料讀取,在單元測試中調用這個介面,但是不指定具體的參數行,這個參數行在單獨的設定檔裡配置。這個就可以統一的管理每次測試執行時所取用的參數行內容了。下面的代碼是用來取用各種資料來源裡面的測試資料的。

#encoding: utf-8 require 'DBI' require 'odbc_utf8'  def generate_sql(table, what=nil, where=nil)  what="*" unless what  where="1=1" unless where  "select %s from %s where %s" % [what, table, where] end  def generate_hash(header, all_data)  t_arr = []  all_data.each do | row |  t_hash = {}  for i in 0..header.size-1 do   t_hash[header[i]] = row[i]  end  t_arr << t_hash  end  t_arr end  def select_hash_db(dsn,user,password,db,sql)  begin  dbh = DBI.connect(dsn, user, password)  dbh.do("use #{db}")  dbh.do("SET NAMES UTF8") if dsn.split(':')[1] == "Mysql"  sth = dbh.execute(sql)  arr = Array.new  sth.fetch_hash do | row |   arr << row  end  sth.finish  arr  rescue DBI::DatabaseError => e  puts "An error occurred"  puts "Error code: #{e.err}"  puts "Error message: #{e.errstr}"  ensure  dbh.disconnect if dbh  end end  class Text_Adapter   def initialize(file_path, sep=" ", col_num=nil, row_num=nil)   end   def get_pars(row=nil)   end  end  class Mysql_Adapter  def initialize(ds_connector, table_name, what=nil, where=nil)  @sql_str = generate_sql(table_name, what, where)  @ds_connector = ds_connector  end   def get_pars(row=nil)  dsc_arr = @ds_connector.split("#")  all_data = select_hash_db(dsc_arr[0],dsc_arr[1],dsc_arr[2],dsc_arr[3],@sql_str)  if row.class==Fixnum   all_data[row]  else   all_data  end  end end  class Excel_Adapter   def initialize(ds_connector, table_name, what=nil, where=nil)  @connection = WIN32OLE.new('ADODB.Connection')  @record_set = WIN32OLE.new('ADODB.Recordset')  @ds_connector = ds_connector  @sql_str = generate_sql(table_name, what, where)  end   def get_pars(row=nil)  t_arr = []  @connection.Open(@ds_connector)  @record_set.Open(@sql_str, @connection)  @record_set.Fields.count.times do | i |   t_arr << @record_set.Fields.Item(i).name  end  all_data = @record_set.GetRows.transpose  all_data = generate_hash(t_arr, all_data)  if row.class==Fixnum   all_data[row]  else   all_data  end  end end   class Parameter  def initialize(ds_connector, table_name, what=nil, where=nil)  dsc_arr = ds_connector.split("#", 2)  eval("@adp = #{dsc_arr[0]}.new dsc_arr[1], table_name, what, where")  end   def get_pars(row=nil)  @adp.get_pars(row)  end end 

調用方法:

par = Parameter.new(Ds_mysql_connector, 'demo') p par.get_pars(0) 

設定檔配置:

##連結excel中資料庫的串 EXCEL_DSN = %{Excel_Adapter#Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 5.0;} EXCEL_FILE = %{D:\\1.xlsx} ##連結mysql的串 Ds_mysql_connector = %{Mysql_Adapter#DBI:Mysql:shoppingcart:127.0.0.1#root#password#shoppingcart} ##指定當次運行側事故參數的行號,從0開始 PAR_ROW = 1 

相應的檔案指向路徑、ip地址、資料庫名、使用者名稱、密碼等需要修改

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.