同時テストの実行 Cucumber/Capybara

概要

Cucumber/Capybara を使用した同時テストの実行をどこから始めればよいかについてのサポートを探しています。 「Parallel_tests」gem を使用せずにこれを行う必要があります。その理由は、プロセスごとに個別のユーザーをログインさせることができないようだからです。

おそらく配列でユーザーの共有プールを作成できると考えていましたが、gem を使用してこのデータを別のプロセス間で共有することはできません。

私が受け取ったフィードバックの中には、IO.pipe を使用するというものがありますが、まだそれについて十分に理解していません。

私はスタンドアロンの Cucumber フレームワークを持っていますが、Rails などはありません。

解決策

私の解決策を投稿しようと思いました。結局、ユーザープールをアプリケーションから分離し、Redis を使用して保存することにしました。

次に、Redis のセットからランダムなユーザーを選択し、使用が終了したら元に戻す簡単なメソッドを用意します。

def choose_redis_user
  @redis = Redis.new
  @randUser = @redis.spop("users")
  $user_username = @redis.hget(@randUser, "username")
  $user_password = @redis.hget(@randUser, "password")
end

def return_redis_user
  @redis.sadd("users", @randUser)
end

次に、テスト内で以下を実行できます。

login_page.username.set($user_username)
login_page.password.set($user_password)

これは複数のParallel_testsで非常にうまく機能します。