Testim.io でパラメーターを使う方法はいくつかあります。例: データ駆動テスト、グループ、Exports Parameters、設定ファイルと実行フック、Params file。それぞれ適用タイミングや目的が異なり、上書きの優先関係が発生します。
上書きの基本
多くのプログラミング言語と同様、同名の値は後から代入したものが有効になります。Testim でも同様に上書きが発生します。
テスト開始前
- Config-file のパラメーター は params-file のパラメーター を上書きします。設定ファイル内では
beforeTestがbeforeSuiteを上書きします。 - Params-file のパラメーター は 既定のテストデータ/ランデータ を上書きします。
Note: テストに渡されるすべてのパラメーターはローカルレベルの可視性(テスト全体を大きな 1 つのグループとみなす)を持ちます。
実行中
可視性スコープは次の 3 種類です。
- Local — 値はグループ内に存在し、グループを抜けるとアクセスできません
- Test — テストの間有効です
- Test Suite — 複数テスト実行をまたいで受け渡されます
上書きの優先
スコープが狭い(よりローカルな)値ほど優先されます。ローカルが最強で、必ずローカルが使われます。例:
exports.x = "local"exportsTest.x = "test"exportsGlobal.x = "global"...console.log(x); // prints "local"用途の整理
データ駆動テストのパラメーター:
既定値の定義に使います(設定ファイルやフックで上書きされ得る)。配列(オブジェクトの配列)を与えると同一テストを複数回実行できます。
パラメーターファイル:
テスト固有ではなく、すべてのテストへ共通値(例: 共通認証情報)を渡します。
設定ファイル:
動的にパラメーター群を読み込みます。Node.js で実行されるカスタム JS が使えるため、DB や CSV など任意のソースから読み込めます。サンプルはこちら。Notes:
beforeTestとbeforeSuiteは配列(複数データセット)の返却をサポートしません。配列を渡すとオブジェクトとして扱われます(このコンテキストでは、return ["x", "y" "z"]はほぼreturn {1: "x", 2: "y", ;3:"z"})と等価です)。beforeSuiteとoverrideTestDataの両方で同名パラメーターを指定した場合はbeforeSuiteが優先されます。
beforeSuite でテストデータを上書きする例:
beforeSuite() { return { y: 5, overrideTestData: { "testname1": [{x: 6}, {x:7}] , // runs testname1 twice "testname2": {y:7} // y will be 5 because the beforeSuite object wins }}