3

behat BDD を使用して sugarcrm 機能を自動化し、PHP 用のセレン Web ドライバーを使用して Mink を自動化しようとしています。両方を適切にインストールし、behat と mink を一緒に実行することができました。たとえば、sugarcrm でのログインを 1 つの機能としてチェックします。

今問題は、login.feature と setup.feature という 2 つの機能ファイルを作成するときです。Behat はブラウザでログイン プロセスを正常に自動化しますが、以前の機能からログイン セッションを維持する必要がある setup.feature に切り替えるとすぐに、セッションを破棄してログイン ウィンドウに戻ります。したがって、2 番目の機能テストは常に失敗します。

機能スイートのすべての機能のセッションを維持するにはどうすればよいですか?

私も別のシナリオとして単一の機能ファイルでそれらを試しましたが、同じことが起こっているので運がありませんでした。

誰かがそれについて知っているなら、私を助けてください。

4

2 に答える 2

11

機能とシナリオは独立している必要があります。あるシナリオで何かを実行すると、その状態が次のシナリオに引き継がれないというのは、想定される動作です。

あなたが何を達成しようとしているのかはわかりませんが、間違いなく間違ったことをしています。

編集:

すべてのシナリオの前にユーザーをログインする必要がある場合は、必要なすべての操作を実行するメタ ステップを記述します。

Given I am logged in

ステップ実行チェーンを使用するか、単に Mink を直接呼び出すことができます。

機能ファイルのすべてのシナリオでログインが必要な場合は、バックグラウンドを使用できます。

Background:
    Given I am logged in

Scenario: Listing users
    Given ...

Scenario: Removing a user
    Given ...
于 2012-09-27T10:31:05.180 に答える
1

Jakub Zalasの回答に完全に同意します

それでも、すべての機能でバックグラウンドを宣言する重複したコードを取り除くことが目標である場合は、フックを使用して、各シナリオの前に必要なすべてのアクションを実行できると思います

于 2013-01-18T21:37:15.403 に答える