2

calabash-ios を使用して自動テストを行っています。cucumber を 1 回実行して、x ユーザー名に対して x 回実行し、さまざまなテスト シナリオを実行できるようにしたいと考えています。

私はこれを使いたい:

ID [#{Login-name}] と pwd "PASSWORD" を使用して [#{country-name}] ユーザーとしてログインし、国とユーザー名の両方の値を格納できるグローバル変数があるとします。

スクリプトを使用してキュウリを x 回実行し、毎回グローバル変数の値を設定することを望んでいました。これは可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?

@@Loginname=value を使用してみましたが、次のエラーが発生しました: features/step_definitions/common.rb:1: 警告: トップレベルの初期化されていないクラス変数からのクラス変数アクセス @@Login オブジェクト (NameError)

どちらが失敗した場合、ひょうたんを使用してxmlまたはcssファイルに保存されたデータにアクセスできますか?

4

1 に答える 1

4

同じ cucumber run をいくつかの異なる変数で何度も実行したい場合は、環境変数を使用するだけです。

Given I login as "ENV['COUNTRY_NAME']" user using id "ENV['LOGIN_NAME']" and pwd "PASSWORD"

そして、テストを実行すると

LOGIN_NAME='login name' COUNTRY_NAME=country bundle exec cucumber 

そしてもちろん、実行したいすべての行をbatまたはshスクリプトに入れることができます。

注意すべきことの 1 つは、環境変数または別の変数を使用して出力のパスを変更し、それらを上書きしないようにすることです。

ただし、より洗練された解決策は、他のすべてのタスクを実行する rake タスクで処理することです。これを記述する最も効率的な方法は、必要な異なる実行の数によって異なります。

task :all => [:task1, :task2, :task3]

編集: シナリオを読みやすくするには、シナリオで一般的なプレースホルダーを使用し、ステップ定義で環境変数を非表示にする必要があります。

    Given I login as a user

次のようなステップ定義がある場合があります。

Given /^I login as a user$/ do
  ... set up your page object here ...     
  login_page.login(ENV['COUNTRY_NAME'], ENV['LOGIN_NAME'])
end
于 2015-04-14T09:10:16.043 に答える