亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Windows下Ruby+Watir自動化測試的環境搭建及數據讀取

2020-10-29 19:36:30
字體:
來源:轉載
供稿:網友

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類似項目用的執行框架都是單元測試的框架,天然也不支持參數化?,F在只有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地址、數據庫名、用戶名、密碼等需要修改

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂2020| 精品国产999| 精品免费在线视频| 一个人www欧美| 精品中文字幕久久久久久| 国产欧美一区二区三区四区| 国内精品视频一区| 亚洲偷欧美偷国内偷| 欧美噜噜久久久xxx| 国产精品第3页| 国产精品日韩一区| 亚洲美女免费精品视频在线观看| 国产精品亚洲精品| 日本免费一区二区三区视频观看| 成人妇女免费播放久久久| 国产69精品久久久久久| 久久久久久久久久久成人| 2021国产精品视频| 97超碰色婷婷| 亚洲午夜未删减在线观看| 欧美一区二区三区四区在线| 亚洲精品欧美日韩| 久久香蕉国产线看观看网| 久久久久这里只有精品| 欧美性猛交xxxx偷拍洗澡| 国产亚洲欧美日韩精品| 成人黄色av播放免费| 国产精品一区二区av影院萌芽| 国产v综合v亚洲欧美久久| 正在播放欧美一区| 精品无码久久久久久国产| 亚洲人成在线电影| 精品国产91乱高清在线观看| 成人国产精品av| 欧美超级免费视 在线| 精品欧美国产一区二区三区| 韩曰欧美视频免费观看| 欧美网站在线观看| 国语自产偷拍精品视频偷| 成人网在线观看| 欧美国产亚洲精品久久久8v| 日韩av电影手机在线| 成人在线视频网| 国产精品专区h在线观看| 国产一区二区美女视频| 欧美亚洲国产日本| 中文字幕av一区二区三区谷原希美| 色悠久久久久综合先锋影音下载| 欧美大胆在线视频| 国产日韩精品一区二区| 欧美激情视频三区| 亚洲精品免费在线视频| 国产成人综合精品| 亚洲丁香久久久| 国产精品视频资源| 国产精品毛片a∨一区二区三区|国| 欧美精品18videos性欧美| 久久久久久欧美| 亚洲男人的天堂在线| 欧洲成人午夜免费大片| 黄色成人av在线| 黑人巨大精品欧美一区二区免费| 亚洲天堂免费观看| 日本精品视频在线播放| 九九热最新视频//这里只有精品| 日韩在线观看免费网站| 亚洲欧洲黄色网| 日本成人免费在线| 日韩欧美成人精品| 大桥未久av一区二区三区| 一区二区福利视频| 日韩美女福利视频| 国语自产精品视频在线看一大j8| 久久av资源网站| 国产精品福利无圣光在线一区| 最近2019年日本中文免费字幕| 国产精品电影久久久久电影网| 国产精品免费一区| 欧美精品手机在线| 欧美黑人狂野猛交老妇| 精品中文字幕在线| 亚洲永久在线观看| 亚洲图片欧美日产| 久久人人爽亚洲精品天堂| 欧美日韩国产综合视频在线观看中文| 国模gogo一区二区大胆私拍| 日韩av三级在线观看| 精品成人国产在线观看男人呻吟| 精品美女永久免费视频| 日韩中文字幕在线观看| 亚洲欧美一区二区三区久久| 日韩欧美高清在线视频| 成人精品网站在线观看| 日本久久久久久久久久久| 欧美日韩性生活视频| 国产在线一区二区三区| 成人激情综合网| 亚洲自拍高清视频网站| 欧美性少妇18aaaa视频| 欧美性视频网站| 在线观看成人黄色| 亚洲国产精品va在看黑人| 国产精品久久久久久搜索| 成人在线观看视频网站| 欧美福利视频在线| 久久久女女女女999久久| 欧美xxxx综合视频| 亚洲国产成人久久| 国产suv精品一区二区三区88区| 国产狼人综合免费视频| 国产精品高潮呻吟久久av黑人| 欧美成人免费播放| 久久久久久免费精品| 人人做人人澡人人爽欧美| 97视频在线免费观看| 久久视频中文字幕| 亚洲aa在线观看| 亚洲第一福利视频| 中文字幕精品网| 欧美一级免费看| 中文精品99久久国产香蕉| 日韩中文字幕在线| 欧美日本啪啪无遮挡网站| 久久久久久久久综合| 欧美成年人视频网站| xvideos亚洲| 久久成人精品一区二区三区| 国产精品视频永久免费播放| 久久久亚洲欧洲日产国码aⅴ| 九九热精品视频| 尤物九九久久国产精品的特点| 国产一区二区三区精品久久久| 91精品国产高清久久久久久| 久久999免费视频| 亚洲天堂一区二区三区| 久久偷看各类女兵18女厕嘘嘘| 久久天天躁狠狠躁夜夜av| 欧美综合一区第一页| 国产91在线视频| 亚洲免费av网址| 国产九九精品视频| 最近免费中文字幕视频2019| 欧美高清videos高潮hd| 高跟丝袜欧美一区| 亚洲福利视频二区| 国产免费一区二区三区在线能观看| 日韩在线播放av| 日韩精品免费观看| 欧美激情视频一区| 色综合色综合网色综合| 日韩免费在线看| 亚洲国产精品久久久久| 欧美日韩国产第一页| 一区二区三区久久精品| 国产99在线|中文| 欧美插天视频在线播放| 国产精品视频免费观看www| 欧美第一页在线| 成人h片在线播放免费网站| 久久久免费电影| 日韩一区二区三区在线播放| 亚洲一区亚洲二区| 亚洲精品久久久久中文字幕二区| 成人激情综合网|