https://github.com/intuit/karate#calling-other-feature-files
リンクは、上記のコードを再利用するために、機能ファイルを呼び出す例が含まれています。入力と呼ばれ、再利用される機能ファイル
Background:
* configure headers = read('classpath:my-headers.js')
* def signIn = call read('classpath:my-signin.feature') { username:'john', password: 'secret' }
* def authToken = signIn.authToken
私-signin.featureと呼ばれます:
Scenario:
Given url loginUrlBase
And request { userId: '#(username)', userPass: '#(password)' }
When method post
Then status 200
And def authToken = response
...
この例では、私の-signin.featureは、入力ユーザー名とパスワードを使用して実行する必要があります。私は場合は、次のように持っていたことを知っています:
Background:
* def username = "foo"
* def password = "secret"
私-signing.featureファイルの先頭に、機能ファイルを再利用しようとする機能によって、パラメータの入力が上書きされます。
私の質問は次のとおりです。再利用は、他の機能ファイルを呼び出すことができるというの主な関心がある場合、それらはバックグラウンドで定義されていた場合、ユーザー名とパスワードのパラメータ上書き通話機能のファイルを持ってする方法はありますか?
代わりに副の入力パラメータの上書き背景を持つことがその逆* .featureファイルを再利用するのは難しいそれを作るように私には思えます。私は私が私のプロジェクトにはほとんどイライラが私はすでに別のファイルに再利用可能なコードをリファクタリングすることなく書かれていたテストを再利用することができないことを発見した知っています。
空手でどれと呼ばれる機能は、魔法の変数を持つことになり__arg
、あなたと呼ばれるスクリプトであなたの変数に値を代入する前にこれをチェックすることができ、。
Background:
* def username = (__arg == null) ? "foo" : __arg.username
* def password = (__arg == null)? "secret" : __arg.password
これは、渡された値をチェックします
- 何も渡されない場合は、デフォルトを割り当てます
* def signIn = call read('classpath:my-signin.feature')
- 引数を渡された引数で渡された場合に割り当てられます
* def signIn = call read('classpath:my-signin.feature') { username: 'notfoo', password: 'notsecret' }
簡単にするために、必要にこれ以外合格したことを他の任意のパラメータを持っていません。