Ruby+Watirの自動テスト環境とWindowsでのデータ読み込みについて
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) Firefox 2.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のディレクトリ: librubygems\1.8gems\rubygems-update-1.3.4, click on the file in this folder: setup.rb, and upgrade 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のインストールパス( \rubylibrubygems1.8gemsfirewatir-1.1 )を入力し、unittestsフォルダに入り、コマンド:ruby mozilla_all_tests.rb を実行して、プログラムが正しく実行できれば、インストールは正しく、問題がないことになります。正しく実行できれば、インストールは正しく、問題がないので自動テスト開発の旅に出ることができる。
6. watir のインストール中、'nmake' は内部コマンドでも外部コマンドでもなく、実行可能なプログラムでもバッチファイルでもない。
コマンドの使用
gem install --local watir-1.5.2.gem
そして、インストールは完了です
様々なデータソースからテスト用パラメータ付きデータを読み込む
QTP自体は既にありますが、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
end
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)
コンフィギュレーションファイルの構成。
## Link the string of the database in excel
EXCEL_DSN = %{Excel_Adapter#Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 5.0;}
EXCEL_FILE = %{D:\\1.xlsx}
## link mysql string
Ds_mysql_connector = %{Mysql_Adapter#DBI:Mysql:shoppingcart:127.0.0.1#root#password#shoppingcart}
## Specify the line number of the current run-side incident parameter, starting from 0
PAR_ROW = 1
対応するファイルのポインティングパス、IPアドレス、データベース名、ユーザー名、パスワードなどを変更する必要があります。
関連
-
Luhnアルゴリズムの学習とそのRuby実装コード例
-
MacとLinuxでのruby+rails環境の構築
-
Rubyのオブジェクト指向プログラミングでクラスとメソッドの基本を学ぶ
-
Rubyブロックチュートリアル
-
RubyとRuby on Railsフレームワーク環境構築の簡潔なチュートリアル
-
Rubyのgemパッケージマネージャの使い方とbundlerによる複数バージョンのgemの管理
-
Ruby は REXML ライブラリを使って xml 形式のデータをパースする
-
Ruby on Railsにおける国際化の簡単な紹介
-
Rubyメタプログラミングの注目すべき点
-
Rubyのモジュールに関する基礎知識
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Rubyを使ったFTPパスワードクラッキング
-
win10でvirtualbox+vagrantでrubyの開発マシン環境を構築する
-
Ruby on Railsで構築するアプリケーションの基本的なディレクトリ構造のまとめ
-
Rubyプログラムにおける正規表現の基本的な使い方に関するチュートリアル
-
RubyでXMLデータ処理ライブラリREXMLを使うための手引き
-
Rubyでタスクビルダーのrakeを使い始める
-
Rubyのインストールと操作
-
RubyGnome2 ライブラリを用いた GTK 環境での Ruby GUI プログラミングの基本的な考え方
-
Ruby on Railsのビューの書き方に関するいくつかのアドバイス
-
Rubyのメソッドを検索して実行する