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=104release_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=104release_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,如果可以正確執(zhí)行程序,說明安裝正確沒有問題,到此可以開始自動化測試開發(fā)的旅程了。
6、在安裝watir過程出現(xiàn)'nmake' 不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件。
使用命令
gem install --local watir-1.5.2.gem
就安裝成功了!
讀取各種數(shù)據(jù)源中的測試參數(shù)化數(shù)據(jù)
自動化測試時常用到的技術就是參數(shù)化,不支持參數(shù)化的測試框架是痛苦的。QTP自身本來就有,但是類似ruby的watir,以及selenium等都不是天然支持的,因為這些個框架只提供了最基礎的自動化驅(qū)動類庫,而驅(qū)動以外的執(zhí)行管理、數(shù)據(jù)管理等又是一個課題。大部分的selenium和watir類似項目用的執(zhí)行框架都是單元測試的框架,天然也不支持參數(shù)化?,F(xiàn)在只有junit4版本支持參數(shù)化,以及testNG默認支持多種參數(shù)化。如果你開始項目的話可以優(yōu)先考慮兼容這些類似框架的語言來做自動化。
watir雖然本身不支持參數(shù)化,ruby的單元測試也不支持,但是參數(shù)化也要做啊,沒辦法只能想想變通的法子。所以單獨寫了一個參數(shù)化的類,來補充一下參數(shù)化功能的不足。其工作方式是提供統(tǒng)一的測試數(shù)據(jù)源的數(shù)據(jù)讀取,在單元測試中調(diào)用這個接口,但是不指定具體的參數(shù)行,這個參數(shù)行在單獨的配置文件里配置。這個就可以統(tǒng)一的管理每次測試執(zhí)行時所取用的參數(shù)行內(nèi)容了。下面的代碼是用來取用各種數(shù)據(jù)源里面的測試數(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ù)庫的串
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}
##指定當次運行側事故參數(shù)的行號,從0開始
PAR_ROW = 1
相應的文件指向路徑、ip地址、數(shù)據(jù)庫名、用戶名、密碼等需要修改
您可能感興趣的文章:- 在Docker中自動化部署Ruby on Rails的教程