2016-08-04 22 views
0

"do any combination"テストのテンプレートキーワードがあります。ここで$ {labels}はリスト、$ {versions}はリストですリスト:Robot Frameworkのテストテンプレートに引数のリストを入力する方法

TT Process Instance Version Search 
    [Arguments]  ${labels} ${versions} 
    Login 
    Process Instance Version Search  ${labels} ${versions} 

その後、私は、テスト・スイートのファイルを作成し、次のように配置します。

*** Settings *** 
Test Template TT Process Instance Version Search 


*** Variables *** 
@{ProcessVersions} = ${Process0}  ${Process1}  ${Process2} 
@{SingleVersion} = ${Process2} 
@{Process0} = 1 2 
@{Process1} = 3 test_version 
@{Process2} = 1 

@{SingleProcessLabel} = Label1 
@{ProcessLabels} = Label1  Label2 Label3 

    *** Test Cases ***          
Single Instance Version for a Single Process  ${SingleProcessLabel} ${SingleVersion} 
Distinct Instance Versions for Multiple Processes ${ProcessLabels} ${ProcessVersions} 

私が取得エラーメッセージは 『{バージョン} @』 」リストの変数は、インデックスに何のアイテムを持っていません0 "

埋め込まれた引数を使用することを含め、私はこれと多くのことを行いました。これを解決するための唯一の方法は、$変数をグローバル変数として直接提供しています。私のコードはグローバル変数で正常に動作しますが、手動でデータを変更する必要があります。私が本当に必要とするのは、データ駆動型設計を実装することです。

ご協力ありがとうございます。

+1

あなたがダウンし、できるだけ数行を持つ単一のファイルへのすべてのコードを減らすことができればそれが役立つだろう。ここでは

は例のカップルを示したテストです。その大きな説明を辿るのは難しいです。私の推測では、これはおそらく数十行のコードにまで減らすことができます。 http://www.stackoverflow.com/help/mcveを参照してください。 –

+0

これは長すぎると申し訳ありません。それは私が取り組んでいる特定の事例の単なる例です。問題は、リストのリストをテストテンプレートに引数として与える方法ですか? – emi

+0

本当の質問であれば、質問を編集して不必要なコードをすべて削除してください。しかし、その質問は非常に明確ではありません。なぜなら、「リストのリストをどうすればよいのか」という答えは、単にリストのリストを作成し、それを他の引数のように渡すことだからです。ロボットはリストのリストを渡すのに何の問題もありませんが、何かもっと意味があると思います。リストのリストを取り、サブリストの各要素を引数として扱う方法を尋ねていますか(つまり、リストのリストを単一の引数リストにまとめる)? –

答えて

2

質問へのコメントから、あなたは書いた:

を質問がある:テストテンプレートに引数としてリストのリストを養うためにどのように?

これに対する答えは、ロボットフレームワークのユーザーガイドのList Variablesセクションに記載されています。キーワードを呼び出すときに、変数の前に$を使用すると、変数はリストオブジェクトとして扱われます。 @を使用すると、変数は複数の引数に分割されます。

引数を受け入れるキーワードを記述する場合も同様です。 1つの引数を使用する場合は、引数variableに$を使用します。すべての引数をリストとして収集する場合は、@を使用します。

*** Variables *** 
@{numbers} 1 2 3 
@{letters} a b c d 
@{listoflists} ${numbers} ${letters} 

*** Keywords *** 
Accept list of lists as single arg 
    [Arguments]   ${arguments} 
    length should be ${arguments}  2 
    length should be ${arguments[0]} 3 
    length should be ${arguments[1]} 4 

Accept multiple args 
    [Arguments]   @{arguments} 
    length should be ${arguments}  2 
    length should be ${arguments[0]} 3 
    length should be ${arguments[1]} 4 


*** Test cases *** 
Pass list of lists as single argument 
    Accept list of lists as single arg  ${listoflists} 

Pass list of lists as multiple arguments 
    Accept multiple args @{listoflists} 
    Accept multiple args ${numbers} ${letters} 
+0

こんにちはブライアン、助けてくれてありがとう。 @ {ProcessLabels}リストと@ {ProcessVersions}リストを$ {ProcessLabels}と$ {ProcessVersions}という単一の引数として渡していますか?私はグローバル変数を使用するときにそれをやっても問題ありません。問題はテストテンプレートを使用しようとするときです。 – emi

+0

@emi:分かりません。問題を再現するのに十分な情報を投稿していません。これが私がmcve(http://www.stackoverflow.com/help/mcve)を依頼した理由です。 –

+0

ブライアンありがとうございます。ダミーのキーワードでいくつかのテストを行った結果、テストテンプレートではなく、コード自体に問題があることがわかりました。グローバル変数が設定されていると、エラーは発生しません。しかし、PyCharm(または少なくともコミュニティ版)では、エラーのあるコード行は返されないため、テストテンプレートの問題と見なしました。あなたはRobotスクリプトを書くのに使えるより良いIDEを提案できますか? – emi

関連する問題