アーカイブ

‘Development’ カテゴリーのアーカイブ

fixtures yaml をDBにロードする方法

2011 年 5 月 12 日 Aki コメントはありません

# 毎回検索したりしてるのでメモ 
rake db:fixtures:load
test/fixtures に配置した テーブル名.yml(yaml形式で記述されたデータ定義) ファイルをDBに登録する。

 
テーブル名指定

FIXTURES=x,y
 
ex. rake db:fixtures:load FIXTURES=x,y

 
サブディレクトリ指定 (test/fixtures 以下でサブディレクトリを切ってデータを分ける場合など)

FIXTURES_DIR=z
 
ex. rake db:fixtures:load FIXTURES=x,y FIXTURES_DIR=z

 
ディレクトリ指定 (test/fixtures 以外でパス指定する場合)

FIXTURES_PATH=spec/fixtures
 
ex. rake db:fixtures:load FIXTURES=x,y FIXTURES_PATH=spec/fixtures

   

Load fixtures into the current environment’s database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures.

カテゴリー: Development タグ: ,

cucumber で javascript テスト

2011 年 5 月 11 日 Aki コメントはありません

cucumber で javascriptテストなどをする場合はシナリオごとに @javascript タグを付ける。
テストを実行するとなんらかのWebDriver (デフォルトはselenium) がブラウザを起動して
テストを実行するわけだが、alert や confirm が邪魔になる場合がある。
これらの確認をする必要がない場合は単純に alert や confirm を上書きして
なんの挙動もしないようにしてしまえば良い。

さらに web_steps_ja.rb に利用部品として書いて好きな時にユーザが呼び出せるようにしてしまえば良いかな。

web_steps_ja.rb

module NotificationHelpers
  def ignore_notification(page)
    page.evaluate_script("window.alert = function(msg) { return true; }")
    page.evaluate_script("window.confirm = function(msg) { return true; }")
  end
end
World(NotificationHelpers)

前提 /^通知を無視する$/ do
    ignore_notification(page)
end

test.features (サンプル)

     @javascript
     シナリオ: 〜〜〜を登録する
     前提     ログイン名が"xxxxx"、パスワードが"yyyy"のユーザでログインしている
     前提     "〜〜〜登録"ページを表示している
     前提     通知を無視する

     〜以下任意のテスト〜

     もし         〜をクリックする
     ならば     〜が表示されていること

#上記テストを実行するとブラウザが勝手に起動してテスト動いていくので selenium に免疫のない人はびっくりしないように :-)

カテゴリー: Development, Ruby タグ: , , ,

cucumber の paths.rb で DBの値を利用する

2011 年 4 月 26 日 Aki コメントはありません

そもそも paths.rb の中で Model使えるのかとか思ったのですが、なんの事はない。普通に User.find(123) とかできるのですね。ちゃんと理解していないからこんな疑問が発生するのでしょう。

それはさておき。

when /フォロワーが([0-9]+)人いるユーザのプロフィール画面/
    user = Users.find(:first, :conditions => { :follower => $1.to_i} )
    edit_user_info_path(user.id)

([0-9]+) など、正規表現でマッチングさせておきと $1 で値渡してあげれば OK
正規表現のマッチングで () 内にヒットしたものが $1, $2…となるのを知らない人は意外にいるようだ。

paths.rb っていうか、結局 routes.rb の話なんだよね。

カテゴリー: Development, Ruby タグ: , ,

Titanium & Android SDK セットアップエラー

2011 年 3 月 28 日 Aki コメントはありません

Titanium Developer (1.2.2) で Android SDK を指定する際に

Couldn't find adb or android in your SDK's "tools"
というエラーが発生する場合

platform-tools/adb を toolsに移動するとエラーは発生しなくなる。
sdk のバージョンアップで adb の配置先が変わったようだ。

WEB+DB PRESS Vol.61

カテゴリー: Development タグ:

Mac OS X での Rails アップデート

2011 年 1 月 4 日 Aki コメントはありません

既存バージョンの確認

$ ruby -v
ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]

$ gem -v
1.3.5

$ rails -v
Rails 2.3.5

Mac でのアップデートは簡単。以下の通り。

sudo gem update --system

sudo gem install rails

sudo gem update rake

確認

$ gem -v
1.4.1

$ rails -v
Rails 3.0.3

昔はgemすら入ってなかったのに、今は gemもRailsもプリインストールされている。
便利な環境になったもんです。

ちなみに Rails2.3.5 と Rails3.0.3 は共存しています。
Rails2.3.5 系を実行したい場合は

rails _2.3.5_

とすればOKです。

カテゴリー: Development タグ:

watij

2010 年 4 月 18 日 Aki コメントはありません

webア プリケーションに selenium を採用してからかなりの時間が経つが、やはりしっくりこない点が多く、IE では使いにくい。他に良いテスティン グツールはないものかとをネットを探していたら、watij (ワットと発音?)なるものがあった。

IE で使うなら selenium よりも使い勝手が良さそう。試行錯誤の度合いも selenium を使うよりは少なかった気がする。

もちろん Alert や Confirm にも対応しており、子ウィンドウや webページダイアロ グにも対応している。ただし FireFox や Opera, Chrome などク ロスブラウザで使う必要があり、FireFox で Selenium IDE など強力な Webオペレーション記録ツールが使用可能なら Selenium を利用する方がコ ストパフォーマンスは良いかもしれない。

今回は IE のみで動く 昔ながらのビジネスア プリケーションをテストする必要があったので Watij を採用する事にした。ネット上にドキュメントがかなり少ないようなので、つまずいた点や参考になりそうな点をつらづらと綴っていく。

参考サイト

ダ ウンロード

こちらから

zip を解 凍し、lib 配下の jar ファイルをすべて eclipse プロジェクトなどにコピーしておくのを忘れないように。

※ダ ウンロードした zipファ イルの中 (src/java-test/watij) に テストクラスがあるので、テスト方法がわからない場合は参考にすればよい。かなり参考になると思う。

使用方法

私の環境では beanShell はうまく動かなかった事と、Java 方が馴染みがある事と、どうせ Java Web ア プリケーションをテストする為に使うので Java 技術者に広く展開できるよ うに Java UI でのテストを試みる。

http://watij.com/ には

IE ie = new IE();
ie.start("http://www.google.com");
ie.textField(name,"q").set("Watij");
ie.button("Google Search").click();

のように書いてあるのだが name が解決できるわけがない。。

どうしてコレでみんなうまくいくのかが実はよくわからず。

自分なりの解決方法をで解決を試みる。*1

Symbol name = new AttributeFinder("name");

結局 Symbol が見つからないだけなので、上記のようにあらかじめ指定して解決。

(BeanShell ではこのままでうまくいったりするのでしょうか?これがよくわからないです。あくまでも例文はそれくらいわかるやろ的なある程度抽象化したコードだったのでしょうか?)

その他のシンボルはこのような感じで指定できる。

Symbol value = new AttributeFinder("value");
Symbol text = new TextFinder();
Symbol xpath = new XPathFinder();
Symbol tag = new TagFinder();
Symbol url = new UrlFinder();

ス クリーンショット

ie.windowCapture("C:\\xxx\\yyy\\0000.png");
ie.windowCapture("./0000.png");

Aタグの href属性に記述された特定の文字列を探し、そのリンク をクリックする方法。

ie.link(xpath,"//A[contains(@href,'javascript') and contains(@href,'shop=00001') and contains(@href,'dept=DA0001')]").click();

例えば href=”javascript(’shop=00001′,’dept=DA0001′,’sex=female’);” のように関数処理したりしている場合でもこのよ うな指定で画面中の任意のリンクをクリックできる。

xpath文 の記述中でHTMLタグは 大文字で記述しないとelementの検索がうまくいかないので注意が必要。

※ 2010.04.09 追記

この問題は

import static watij.finders.SymbolFactory.*;

とする事で解決できる事を確認 ( Release 3.1.0にて確認済み。 )

カテゴリー: Development タグ: , ,