2016-12-14 4 views
1

私は、javaウェブアプリケーションをテストするためにセレンと組み合わせてキュウリを使用しています。以下は、私たちが持っているシナリオですキュウリの別のシナリオへの入力として1つのシナリオの出力を取得する

get generate PIN page 
enter user name 
enter password 
click on submit button 

これで多くの計算に応じてデータベースにPINが生成されます。今私は別のシナリオへの入力としてそれを与えるために、特定のPINが必要です。どうすればこれを達成できますか?前もって感謝します。

答えて

0

上記のシナリオを実行した後、データベース内のPINにアクセスできるとします。その場合、PINが実際に生成されたことを確認して確認するシナリオにもう一度足を伸ばします。その時点で、PINをローカル変数に格納し、次のシナリオで使用することができます。

だからあなたの最初のシナリオは次のようになります。

Get generate PIN page 
Enter user name 
Enter password 
Click on submit button 
Confirm PIN number in database 

最後のステップは、セレン以内に行うが、APIコールまたはデータベースからPINを取得するためのいくつかの他の手段を介してすることではないでしょう。 PIN(例えば、regex=/^\d{4}$/)を確認し、@customer_pin(Rubyを使用していると仮定)などのローカル変数に格納します。

あなたの次のシナリオでは、このような何かを始めるでしょう:

Get generate login page 
Enter customer ID 
Enter customer PIN 
etc 

あなたがヒットすると、「顧客のPINを入力します」ステップは、あなたがローカルに格納されている変数(@customer_pin)からそれを引き出します。

この2番目のシナリオを実行すると、このシナリオを順不同で実行する必要がある場合に備えて、ローカルに保存された変数内に正当なPINがあることを確認することができます。私は、変数をグローバルにアクセスできるようにするために$customer_pin代わりの@customer_pinを使用し、この場合、

Before do 
    $dunit ||= false 
    return if $dunit 
    $customer_pin = nil 
    $dunit = true 
end 

:あなたはグローバル変数を使用して、このようなあなたのfeatures/support/env.rbファイル内の「前」フックを実行することによってこれを行うことができます。その後、最初のシナリオを実行した後、$customer_pinは正当な値に割り当てられ、後続のシナリオで使用できるようになります。後続のシナリオでは正規表現を使用して正当な値を持つことを確認し、そうでない場合は例外を発生させます。

+0

提案は、シナリオの実行順序とシナリオの成功に基づいています。私は実行命令を前提とし、他のシナリオからの成功を期待することに対してアドバイスをします。それはよく知られている反パターンです。 –

+0

一般に私は同意しますが、人生のほとんどのもののように...それは依存します。上記のケースは、プログラミングパターンを破るための良い言い訳の悪い例かもしれないので、あなたの心配はよく受けられます。しかし、時には私は大きな財産の精神でパターンを破ることがあります。たとえば、より大きなテストのための足踏みとして小さなテストを実行することは、すべてのテストのバックグラウンドセットアップを繰り返すよりも、より便宜的で侵襲的ではありません。 –

0

私はあなたの問題を2つに分割します。

これは、ステークホルダーにとって重要なピンの生成を検証するものです。

有効なPINが必要な他のケースをサポートするバックドアを実装するもの。おそらく、有効なピン番号を生成または取得できるAPIでしょう。外部からシステムに触れることなく、PINをデータベースに作成して保存することができます。他のシナリオで有効なPINが必要な場合は、この方法でPINを取得します。

有効なPINを取得する方法に関する技術的な解決策はあまり重要ではありません。重要なことは、シナリオの実行順序を切り離すことです。シナリオの実行順序は未定義です。各シナリオは、独立してランダムな順序で実行できる必要があります。

カップリングシナリオは、herehereと記載されているよく知られた反パターンです。

関連する問題