2

私の機能ファイルには、次のようなものがあります。

Background:
 Given I am on login screen
 Then I log in

Scenario:
 Given I am on a random account summary
 when I try feature-1
 Then I see some output-1

Scenario:
 Given I am on account summary
 When I try feature-2
 Then I see some message

cucumber が 2 番目のシナリオを実行すると、バックグラウンドが再実行されます。

私の質問は、前のシナリオと同じブラウザー セッション/状態を使用するように Cucumber に指示することは可能ですか? これにより、テストの実行時間を節約できます。

4

3 に答える 3

4

Capybara は各シナリオの前にセッションをリセットするため、各シナリオの前に明示的にログインする必要があります。ただし、すべてのシナリオでログインをテストするわけではないため、このプロセスを自動化することをお勧めします。

最初に、背景をより宣言的にすることができます。

Background:
 Given I'm logged in

この記事を見てください、それを行う方が良い理由を示しています。

次に、次のことができます。

  1. バックエンドで新しいセッションを生成する
  2. バックエンドからテストにセッション Cookie を送信する
  3. Cookie をカピバラに設定します。Capybara にはクロスドライバー API がないため、以下を使用できます。

ウェブドライバー:

page.driver.browser.manage.add_cookie(name: 'name', value: 'value')

Capybara-webkit :

page.driver.browser.set_cookie('c_user=asdasdasd; domain=.domain.com')

ポルターガイスト:

page.driver.set_cookie('name', 'value')

RackTestは完全にはサポートしていないようです。回避策として、次のことができます。

get new_service_request_path, {}, 'HTTP_COOKIE' => 'name=value'
于 2012-12-25T09:53:55.193 に答える
0

タグ付けだけでなく、Before フックと After フックを使用する多くのオプションがあると思います。ここから読み始めます: https://github.com/cucumber/cucumber/wiki/hooks

このようなもの:

Before do
   AccessRandomAccountPage() #Assumes you're logged in already
end

または、「AlreadyLoggedIn」テストのように、これが一連のテストに固有のものである場合は、タグ付けを使用できます。

Before ('@AlreadyLoggedIn') do
   AccessRandomAccountPage()
end
于 2012-12-31T16:12:22.070 に答える
-1

機能ファイルでは、background: を使用しています。これはすべてのシナリオに対して実行されます。毎回呼び出すのを避けるために ( Background の詳細)、Background: を Scenario: に変更してください。Cucumber に同じものを使用するように指示するだけで十分です。前のシナリオのブラウザー セッション

Scenario:
  Given I am on login screen
  Then I log in

Scenario:
 Given I am on a random account summary
 when I try feature-1
 Then I see some output-1

Scenario:
 Given I am on account summary
 When I try feature-2
 Then I see some message
于 2012-12-27T13:28:17.563 に答える