プログラムでシナリオを再度実行する

user1853777

Behat 3のstackoverflowパラメータに関する質問の後、Ianはbehatパラメータに渡すための解決策を見つけました。

環境に関しては問題ありませんが、国のパラメータについては少し混乱しています。私はこのような機能を持っています:

Scenario Outline: Test if first link works
    Given I am on website "<country>"
    Then I visit the url "my-url"
    Then I click on first link

Examples:
    | country |
    | US      |
    | IT      |

これは私が持っているものです、そして今私は次のようなものを実行したいと思います:

env="stg" country="US,IT" php53 bin/behat --suite=mySuite

しかし、シナリオの概要では、シナリオ全体が各国で実行されます。同じことをしたいのですが、パラメータで渡された国のリストを使用します。

たぶんフックAfterScenarioかそのようなもので、別の構成でシナリオ全体を再度実行できますか?

ありがとう!

イアン・ビチェク

残念ながら、それは標準的なツールでは不可能です。少なくとも頭痛の種と車輪の再発明がなければ不可能です。でも面白い質問です!

でスイートを構成することで、これを機能させることができますbehat.yml基本構成のデフォルトスイートと、各言語のスイートが必要です。

default:
    extensions:
        Behat\MinkExtension

    suites:
        default:
            paths: […]
            contexts: […]

        US:
            paths: […]
            contexts: […]

        IT:
            paths: […]
            contexts: […]

そして@beforeSuiteフックを使用します

/**
 * @beforeSuite
 *
 * @param BeforeSuiteScope $scope
 */
public static function setUpSuite(BeforeSuiteScope $scope)
{
    $suiteName = $scope->getSpecificationIterator()->getSuite()->getName();

    // If the suite denotes one of the languages, then set it as the main language.
}

このソリューションにはいくつかの短所があります。

  1. スイートを言語以外に使用することはできません。
  2. 多くの構成の重複。
  3. フックから言語を設定するのは面倒です。おそらく静的プロパティとして保存する必要があり、各Minkリクエストが送信される前にヘッダーに渡して、サーバーが使用する言語を認識できるようにします。そのためには別のフックが必要になります–とにかく、これは別の痛みの話です。

頭に浮かぶ別の解決策は、countryparamを使用してBehatを順次実行する別のPHP / Bashスクリプトを使用することです。また、いくつかの短所があります。

  1. 毎回異なるBehatパラメータを使用する場合は、それらを渡すためのロジックを追加する必要があります。
  2. 各サブタスクを実行すると、Behatの結果を正しく表示できない場合があります。
  3. どういうわけか、その言語をアプリに渡す必要がありますが、上記の提案は機能するはずです。

ご覧のとおり、これは簡単な作業ではありません。個人的には、2番目の解決策をよりよく信じていますが、よりタイムリーな場合もありますが、多くのカスタマイズのためのスペースも提供します。一方、国ごとに完全に異なるコンテンツ/ロジックがない限り、そのような極端な状況に入る必要はないかもしれません。いくつかの対象を絞ったチェックを行うことで、言語が変更される可能性があり、期待どおりに変更されることを確認するだけで十分です。40か国で同じテストを再実行すると、数時間かかり、大きな価値はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラムを再度実行するオプションを与える方法

分類Dev

Loadrunnerシナリオをプログラムで実行するにはどうすればよいですか?

分類Dev

ターミナルループでJavaシリアルプログラムを実行する

分類Dev

プログラムを再度実行し、結果を配列に格納する

分類Dev

オリジナルを保持せずに別のpythonプログラムを実行する方法?

分類Dev

オリジナルを保持せずに別のpythonプログラムを実行する方法?

分類Dev

Matlab:プログラムでMatlabアプリを実行する

分類Dev

ボタンクリックでプログラムを再度実行しますか?

分類Dev

Pythonシェルでプログラムを実行する

分類Dev

Pythonシェルでプログラムを実行する

分類Dev

オペレーティングシステムなしでプログラムを実行する方法

分類Dev

Python:プログラムで「pipリスト」を実行する

分類Dev

出力をリダイレクトすると、PythonプログラムがDockerコンテナのシェルスクリプトで実行されません

分類Dev

オランダ語で出力するプログラムを実行する

分類Dev

+ RTSオプションをstackexecで実行するプログラムに渡す

分類Dev

LinuxでJavaプログラムを実行するためのシェルスクリプトを作成する

分類Dev

プログラムでDockerコンテナーを実行する

分類Dev

ターミナルでscalaプログラムを実行する方法は?

分類Dev

Macターミナルでc ++プログラムを実行する方法

分類Dev

Macターミナルでc ++プログラムを実行する方法

分類Dev

./vs。ターミナルでプログラムを実行するため

分類Dev

Macターミナル(Intellij)でプログラムを実行する方法

分類Dev

GoLangプログラム内でバイナリファイルを実行する方法

分類Dev

シェルスクリプトで実行可能プログラムを作る..?

分類Dev

Pythonプログラムを実行し、次にRプログラムを実行するシェルスクリプトを実行する

分類Dev

Javaプログラムで2つのエレベーターのシナリオを解決する方法

分類Dev

Cプログラムでexeclを使用してシェルスクリプトを実行する

分類Dev

仮想マシンでfreeRTOS(RTOS)用に作成されたプログラムをバイナリとして実行する

分類Dev

説明に記載されているシナリオでプログラムの実行を一時停止するにはどうすればよいですか?

Related 関連記事

  1. 1

    プログラムを再度実行するオプションを与える方法

  2. 2

    Loadrunnerシナリオをプログラムで実行するにはどうすればよいですか?

  3. 3

    ターミナルループでJavaシリアルプログラムを実行する

  4. 4

    プログラムを再度実行し、結果を配列に格納する

  5. 5

    オリジナルを保持せずに別のpythonプログラムを実行する方法?

  6. 6

    オリジナルを保持せずに別のpythonプログラムを実行する方法?

  7. 7

    Matlab:プログラムでMatlabアプリを実行する

  8. 8

    ボタンクリックでプログラムを再度実行しますか?

  9. 9

    Pythonシェルでプログラムを実行する

  10. 10

    Pythonシェルでプログラムを実行する

  11. 11

    オペレーティングシステムなしでプログラムを実行する方法

  12. 12

    Python:プログラムで「pipリスト」を実行する

  13. 13

    出力をリダイレクトすると、PythonプログラムがDockerコンテナのシェルスクリプトで実行されません

  14. 14

    オランダ語で出力するプログラムを実行する

  15. 15

    + RTSオプションをstackexecで実行するプログラムに渡す

  16. 16

    LinuxでJavaプログラムを実行するためのシェルスクリプトを作成する

  17. 17

    プログラムでDockerコンテナーを実行する

  18. 18

    ターミナルでscalaプログラムを実行する方法は?

  19. 19

    Macターミナルでc ++プログラムを実行する方法

  20. 20

    Macターミナルでc ++プログラムを実行する方法

  21. 21

    ./vs。ターミナルでプログラムを実行するため

  22. 22

    Macターミナル(Intellij)でプログラムを実行する方法

  23. 23

    GoLangプログラム内でバイナリファイルを実行する方法

  24. 24

    シェルスクリプトで実行可能プログラムを作る..?

  25. 25

    Pythonプログラムを実行し、次にRプログラムを実行するシェルスクリプトを実行する

  26. 26

    Javaプログラムで2つのエレベーターのシナリオを解決する方法

  27. 27

    Cプログラムでexeclを使用してシェルスクリプトを実行する

  28. 28

    仮想マシンでfreeRTOS(RTOS)用に作成されたプログラムをバイナリとして実行する

  29. 29

    説明に記載されているシナリオでプログラムの実行を一時停止するにはどうすればよいですか?

ホットタグ

アーカイブ