一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Ruby - Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取

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

2020-05-07 11:06像風(fēng)一樣的自由 Ruby

這篇文章主要介紹了Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取,Watir是一個(gè)使用Ruby實(shí)現(xiàn)的開源Web自動(dòng)化測(cè)試框架,需要的朋友可以參考下

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插件,安裝方法:打開firefox瀏覽器,點(diǎn)擊“文件”/“打開”,選擇插件文件名,安裝即可。

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í)行程序,說明安裝正確沒有問題,到此可以開始自動(dòng)化測(cè)試開發(fā)的旅程了。

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

使用命令

?
1
gem install --local watir-1.5.2.gem

就安裝成功了!


讀取各種數(shù)據(jù)源中的測(cè)試參數(shù)化數(shù)據(jù)
自動(dòng)化測(cè)試時(shí)常用到的技術(shù)就是參數(shù)化,不支持參數(shù)化的測(cè)試框架是痛苦的。QTP自身本來就有,但是類似ruby的watir,以及selenium等都不是天然支持的,因?yàn)檫@些個(gè)框架只提供了最基礎(chǔ)的自動(dòng)化驅(qū)動(dòng)類庫,而驅(qū)動(dòng)以外的執(zhí)行管理、數(shù)據(jù)管理等又是一個(gè)課題。大部分的selenium和watir類似項(xiàng)目用的執(zhí)行框架都是單元測(cè)試的框架,天然也不支持參數(shù)化?,F(xiàn)在只有junit4版本支持參數(shù)化,以及testNG默認(rèn)支持多種參數(shù)化。如果你開始項(xiàng)目的話可以優(yōu)先考慮兼容這些類似框架的語言來做自動(dòng)化。
watir雖然本身不支持參數(shù)化,ruby的單元測(cè)試也不支持,但是參數(shù)化也要做啊,沒辦法只能想想變通的法子。所以單獨(dú)寫了一個(gè)參數(shù)化的類,來補(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)容了。下面的代碼是用來取用各種數(shù)據(jù)源里面的測(cè)試數(shù)據(jù)的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#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)用方法:

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

配置文件配置:

?
1
2
3
4
5
6
7
##鏈接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}
##指定當(dāng)次運(yùn)行側(cè)事故參數(shù)的行號(hào),從0開始
PAR_ROW = 1

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

延伸 · 閱讀

精彩推薦
  • RubyRuby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例,建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表...

    范孝鵬2192020-05-07
  • RubyCentOS中配置Ruby on Rails環(huán)境

    CentOS中配置Ruby on Rails環(huán)境

    經(jīng)過一個(gè)上午的折騰,終于把ROR環(huán)境在CentOS中搞定,繞了很多彎路,把文章寫下來總結(jié)一下 ...

    可樂加糖4762020-04-12
  • Ruby簡(jiǎn)要說明Ruby中的迭代器

    簡(jiǎn)要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動(dòng)態(tài)語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個(gè)技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    這篇文章主要介紹了Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象,本文是學(xué)習(xí)筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼,數(shù)據(jù)是隨機(jī)的,所以每次的記錄都會(huì)不同。 ...

    ruby教程網(wǎng)2962020-04-10
  • RubyRuby環(huán)境下安裝使用bundler來管理多版本的gem

    Ruby環(huán)境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環(huán)境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應(yīng)用實(shí)例來進(jìn)行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數(shù),只有方法.而且實(shí)際上有不止一種方法.這一節(jié)我們介紹 訪問控制 (accesscontrols). 想想當(dāng)我們?cè)谧罡邔佣皇窃谝粋€(gè)類的定義里定義...

    ruby教程網(wǎng)3572020-04-08
主站蜘蛛池模板: 含羞草国产亚洲精品岁国产精品 | www.av网站| 无套插入| 99视频九九精品视频在线观看 | 国产99久久久国产精品成人 | 亚洲福利二区 | 国产高清在线播放刘婷91 | 日韩精选 | 亚洲第一成年免费网站 | 亚洲免费视频一区二区三区 | 男人把大ji巴放进女人小说 | 男男浴室吸乳play | 欧美一区二区三区四区在线观看 | 成人性色生活片免费网 | 丝瓜视频在线观看污 | 色一情一乱一伦 | 亚洲天堂视频在线观看免费 | 欧美久久久久久 | 疯狂激吻添下边小说 | 黄色a∨| 亚洲天堂男人 | 国产专区视频在线观看 | 91好色| 欧美日韩高清观看一区二区 | 非洲黑女人性xxxx | 亚州第一页| 国产欧美国产综合第一区 | 羞羞影院午夜男女爽爽影院网站 | 亚洲欧洲综合 | 倩女还魂在线观看完整版免费 | 9色视频在线观看 | 国产免费一区二区三区 | 四虎免费影院4hu永久免费 | 久久性综合亚洲精品电影网 | 国产资源视频在线观看 | 四虎影库紧急大通知 | 亚洲 日本 天堂 国产 在线 | 美女翘臀跪床被打屁股作文 | 动漫精品午夜在线播放 | 无限好资源免费观看 | 婷婷综合久久 |