web-dev-qa-db-ja.com

スイート/テストのセットアップで新しい変数を作成することは可能ですか?RobotFramework?

キーワードの戻り値に基づいてスイートまたはテストセットアップで変数を初期化することは可能ですか?この種の構文を試しましたが、機能しませんでした。

*** Settings ***
| Suite Setup | ${A variable}= | Set Variable | A String

「スイート変数の設定」などのキーワードを呼び出すことはできますが、変数を別のキーワードの結果に設定することはできません。この例では「変数の設定」を使用しましたが、ここで任意のキーワードを呼び出せるようにしたいと思います。

厳密に言えば、いいえ、それは不可能です。スイートまたはテストセットアップ内では、キーワードのみを呼び出すことができ、セットアップステートメント内で他のキーワードの結果に変数を直接設定することはできません。

そうは言っても、あなたが望むことをするカスタムセットアップキーワードを作成するのは簡単です。例えば:

*** Settings ***
| Suite Setup | Custom suite setup

*** Keywords ***
| Custom suite setup
| | ${A Variable}= | Set Variable | A String
| | Set suite variable | ${A Variable}

上記は、ロボットがセットアップで直接キーワードから変数を設定することをサポートした場合と同じ効果があります。そしてもちろん、Set Variableだけでなく、任意のキーワードを呼び出すことができます。

14
Bryan Oakley

ブライアンの答えを拡張し、キーワードの結果に基づいてスイート変数を作成することに特に関心がない人のために説明を追加するには、RobotFrameworkテストの開始時に「グローバル」変数を初期化する他の方法があります。

最も簡単な方法は、Variablesヘッダーの下に配置することです。

*** Variables ***
${this_string}  This String
${that_int}     5

これを行う別の方法は、同じ変数をResource.txtファイルに入れることです。 *** Settings ***で呼び出されると、変数は自由に使用できます。 VarList.txtというファイルに変数があるとすると、次のコードで変数が初期化されます。

*** Settings ***
Resource    VarList.txt

既存のキーワードと内部変数を含むリソースファイルを使用している場合、これもそのために機能します。

これはすべて、静的変数が必要であることを前提としています。 Set SuiteVariableとSetGlobal Variableはどちらも、ブライアンが言ったようなキーワードで使用できます。 Set Suite Variableは、複数のテストスイートを含むスクリプトに適していますが、その場合はSet GlobalVariableを慎重に使用する必要があります。ただし、単一のスイートスクリプトでは、違いはほとんど無視できますが、ベストプラクティスは、本当にグローバルにしたい場合を除いて、スイート変数の設定を使用することです。そのスイートをに追加することにした場合は、複数のスイートを実行するスクリプト。

1
Brandon Olson