国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > Ruby > 正文

Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取

2020-10-29 19:36:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Watir的使用環(huán)境搭建

1、watir環(huán)境工具安裝包:

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環(huán)境工具安裝包:

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)升級(jí)gem,把gem包拷貝到ruby安裝目錄,在命令行輸入命令:gem install rubygems-update 1.3.7.gem(gem包名)。提醒:安裝完后進(jìn)入ruby目錄:lib/ruby/gems/1.8/gems/rubygems-update-1.3.4,點(diǎn)擊這個(gè)文件夾中的文件:setup.rb,升級(jí)gem即可
3) 安裝watir包,把watir包拷貝到ruby安裝目錄,使用命令行進(jìn)入ruby安裝的目錄,輸入命令:gem install watir-1.5.2.gem。
4)使用命令gem list查看是否安裝成功。

4、安裝firewatir

1)安裝firefox和firebug,Jssh插件,安裝方法:打開(kāi)firefox瀏覽器,點(diǎn)擊“文件”/“打開(kāi)”,選擇插件文件名,安裝即可。

2)安裝firewatir,使用命令行進(jìn)入ruby安裝的目錄,輸入命令:gem install firewatir-1.1.gem

5、測(cè)試firewatir是否安裝成功?

使用命令行進(jìn)入firewatir安裝路徑下(/ruby/lib/ruby/gems/1.8/gems/firewatir-1.1),進(jìn)入unittests文件夾,輸入命令:ruby mozilla_all_tests.rb,如果可以正確執(zhí)行程序,說(shuō)明安裝正確沒(méi)有問(wèn)題,到此可以開(kāi)始自動(dòng)化測(cè)試開(kāi)發(fā)的旅程了。

6、在安裝watir過(guò)程出現(xiàn)'nmake' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。

使用命令

gem install --local watir-1.5.2.gem 

就安裝成功了!


讀取各種數(shù)據(jù)源中的測(cè)試參數(shù)化數(shù)據(jù)
自動(dòng)化測(cè)試時(shí)常用到的技術(shù)就是參數(shù)化,不支持參數(shù)化的測(cè)試框架是痛苦的。QTP自身本來(lái)就有,但是類似ruby的watir,以及selenium等都不是天然支持的,因?yàn)檫@些個(gè)框架只提供了最基礎(chǔ)的自動(dòng)化驅(qū)動(dòng)類庫(kù),而驅(qū)動(dòng)以外的執(zhí)行管理、數(shù)據(jù)管理等又是一個(gè)課題。大部分的selenium和watir類似項(xiàng)目用的執(zhí)行框架都是單元測(cè)試的框架,天然也不支持參數(shù)化?,F(xiàn)在只有junit4版本支持參數(shù)化,以及testNG默認(rèn)支持多種參數(shù)化。如果你開(kāi)始項(xiàng)目的話可以優(yōu)先考慮兼容這些類似框架的語(yǔ)言來(lái)做自動(dòng)化。
watir雖然本身不支持參數(shù)化,ruby的單元測(cè)試也不支持,但是參數(shù)化也要做啊,沒(méi)辦法只能想想變通的法子。所以單獨(dú)寫(xiě)了一個(gè)參數(shù)化的類,來(lái)補(bǔ)充一下參數(shù)化功能的不足。其工作方式是提供統(tǒng)一的測(cè)試數(shù)據(jù)源的數(shù)據(jù)讀取,在單元測(cè)試中調(diào)用這個(gè)接口,但是不指定具體的參數(shù)行,這個(gè)參數(shù)行在單獨(dú)的配置文件里配置。這個(gè)就可以統(tǒng)一的管理每次測(cè)試執(zhí)行時(shí)所取用的參數(shù)行內(nèi)容了。下面的代碼是用來(lái)取用各種數(shù)據(jù)源里面的測(cè)試數(shù)據(jù)的。

#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 

調(diào)用方法:

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

配置文件配置:

##鏈接excel中數(shù)據(jù)庫(kù)的串 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} ##指定當(dāng)次運(yùn)行側(cè)事故參數(shù)的行號(hào),從0開(kāi)始 PAR_ROW = 1 

相應(yīng)的文件指向路徑、ip地址、數(shù)據(jù)庫(kù)名、用戶名、密碼等需要修改

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
九九热视频免费在线观看| 精品a在线观看| 1区不卡电影| 天天操天天操天天色天天要| 激情六月婷婷| 中文字幕在线视频免费观看| 国产黄在线观看| 一区二区三区免费视频网站| 天堂中文在线观看| 高清av中文在线字幕观看1| 国产在线观看色| 中文字幕在线永久在线视频| 国产黄色高清在线| 免费a在线看| 国产精品视频一区二区三区麻豆| 国产桃色电影在线播放| 四虎精品成人a在线观看| 欧美性受xxxx免费视频| 中文字幕在线永久在线视频| 尤物在线视频观看| 天天操天天曰| 不卡av免费观看| 777电影在线观看| 成人超碰在线| 久热中文字幕精品视频在线| 中文视频在线| 国产大学生粉嫩无套流白浆| 国产免费av网站| 欧美艹逼视频| 亚洲免费网站在线观看| 国产精品美女视频免费观看软件 | 在线久久视频| 国产欧美日韩第一页| 青青草视频在线观看| 国产欧美久久久久久久久| 久热av在线| 亚洲sss视频| av麻豆国产| av在线不卡网站| 2018狠狠干| 国产三级在线| 国产极品嫩模在线视频一区| 国产午夜精品久久久久免费视| 九九热视频在线| 青青草视频免费在线观看| 亚洲sss视频| 亚洲夜夜综合| 亚洲一区二区三区在线观看网站| 91高清国产| 中文视频在线| 青青草在线播放| 久久99国产视频| 黄色av免费在线| 最近中文字幕在线中文视频| 国产在线二区| 中文字幕国产视频| 国产成人精品男人的天堂538| 国产系列电影在线播放网址| 国产成人无吗| 天堂中文在线观看| 国产美女av| 精品街拍一区二区| 四虎影院成人| 午夜国产福利在线| 四虎成人免费观看在线网址| 国产专区在线播放| 国产va在线| 超碰在线观看免费版| 最新黄网在线观看| 国产成人精品实拍在线| 日本福利午夜视频在线| 国产有码在线| 伊人影院在线视频| 中文字幕久热在线精品| 一本久久精品| 国产三级在线观看| 男人天堂网在线观看| 国产激情二区| 日本中文字幕在线2020| 天天草天天爽| 国产人成高清视频观看| 热99re久久精品精品免费| 国产经典三级在线| 91xxx在线观看| 青青青手机在线视频观看| 九九视频精品在线| 亚洲天堂二区| 在线观看av网站| 国产二区三区在线| 最新黄网在线观看| 老司机精品视频一区二区| 国产二区三区四区| 国产特级淫片免费看| 日p在线观看| 亚洲国产成人综合| av影视在线看| av手机免费观看| 在线观看av网站| 在线视频三级| av在线第一页| 亚洲久草视频| 日本成a人片在线观看| 在线观看国产福利视频| 精品视频麻豆入口| av福利在线播放| 在线中文字幕第一页| 国产成人va亚洲电影| 国产人成网在线播放va免费| 国产精品被窝福利一区| 国产精品视频一区二区免费不卡| 丁香花高清视频完整版在线观看| 超碰免费在线播放| 五月伊人六月| 国产成人亚洲精品播放器下载| 国产精品视频二区三区| 午夜国产在线| 精品亚洲成a人片在线观看| 在线视频二区| 另类高清dbsm日本tvav| 国产一级片在线播放| 国产成人高清精品| 性欧美精品xxxx| 非洲黑人最猛性xxxx交| 国产精品入口麻豆免费| 亚洲精品白浆| 丁香视频五月| 中文在线有码| 久久精品国产亚洲777| 国产高清免费av在线| 一本大道久久精品| 日本不卡影院| 国产激情网址| 懂色av一区| www.五月色.com| 国产精品99爱免费视频| 青青国产在线| 在线免费国产| 国产日本在线视频| 黄色国产网站在线播放| 中文在线观看视频| 国产一级又黄| 黄色av网站在线免费观看| 中文字幕av高清| 国产网友自拍视频导航网站在线观看| 91三级在线| 国产精品一二三区视频| av在线官网| 在线免费黄色毛片| 国产精品免费麻豆入口| 国产在线观看a视频| 一区二区三区四区在线免费视频| 激情六月丁香| 丁香花视频在线观看| 另类专区欧美| 久热久精久品这里在线观看| 亚洲成人电视网| 亚洲精品在线视频免费| 在线观看免费高清完整| 精品日韩av| 中文字幕av免费| 国产福利在线播放麻豆| 国产精品178页| 国产精品四虎| 96精品视频| av网站在线播放| 亚洲精品国自产拍在线观看| 在线观看的网站你懂的| 2018中文字幕在线观看| 国产精美视频| 亚洲最新永久在线观看| 午夜羞羞小视频在线观看| www.成人.com| 国产美女在线看| 国产免费永久在线观看| 国产香蕉视频在线观看| 五月婷婷导航| 精品电影在线| 欧美高清视频| 国产一级免费黄色片| 国产福利免费在线观看| 伊人网在线视频| 免费看黄视频网站| 最新黄网在线观看| 精品国产高清a毛片无毒不卡| 亚洲一区免费在线| 国产在线色视频| 99热99re6国产在线播放| 免费a级人成a大片在线观看| 福利视频网站导航| 国产黄色免费看| 在线看a视频| 午夜国产在线| 亚洲欧美精选| 国产亚洲精品久久久网站好莱| 国产福利在线播放麻豆| 九九热在线免费视频| 国产wwww| 国产精品入口麻豆免费看| sese一区| 亚洲高清在线免费|