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.
}
このソリューションにはいくつかの短所があります。
頭に浮かぶ別の解決策は、countryparamを使用してBehatを順次実行する別のPHP / Bashスクリプトを使用することです。また、いくつかの短所があります。
ご覧のとおり、これは簡単な作業ではありません。個人的には、2番目の解決策をよりよく信じていますが、よりタイムリーな場合もありますが、多くのカスタマイズのためのスペースも提供します。一方、国ごとに完全に異なるコンテンツ/ロジックがない限り、そのような極端な状況に入る必要はないかもしれません。いくつかの対象を絞ったチェックを行うことで、言語が変更される可能性があり、期待どおりに変更されることを確認するだけで十分です。40か国で同じテストを再実行すると、数時間かかり、大きな価値はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加