2017-10-14 12 views
0

ロボットフレームワーク - 設定セクションでリソースパスをパラメータ化する問題があります。現在、私のセレンプロジェクトのファイルにオブジェクトリポジトリがあり、ObjectMap.Robot fileという名前で保存されています。 ORファイルはプロジェクト内に配置されます。私の目的は、ObjectMap.Robotを遠隔地に置いてアクセスすることです。 Robot FrameWork:設定でリソースパスをパラメータ化する際の問題

は現在、私は、変化し続けるそして、私のキーワードファイルにアクセスしたり、ファイルに ConfigVariables.robot

*** Variables *** 

${DataFilePath} /Sample/DataFiles/ 
${OR_PATH} \\\\AIX2UB333/Resources/ObjectMap/ 

$ {} OR_PATHで変数を定義している、私は以下のように私の設定を設定しています。

*** Settings *** 

Resource ../Resources/ConfigurationFiles/ConfigVariables.robot 
Resource ${OR_PATH}/ObjectMap.robot 

問題:エラーがその

として示されているインポート名/パス '$ {OR_PATH} /ObjectMap.robot' がパラメータ化されます。 使用されているパラメータの一部を解決できません。パラメータ解像度

ため red.xmlの変数のマッピングを使用すると、エラーがまだ存続し、red.xmlに追加しようとしました。 面白いことに、テストケースを実行すると正常に実行されます。しかし、オブジェクトマップから使用される変数には、テストケースに赤いエラーラインがあります。すべての変数にエラーがあります

変数は使用されていますが、定義されていません。

+0

赤いエディタでエラーを無音にする方法を尋ねていますか? –

+0

このエラーは、リソース$ {OR_PATH} /ObjectMap.robotおよびObjectMap.robotで定義されているすべての変数に示されています。基本的にリソースパスで変数を使用する方法を知りたい場合 – Dani

+0

テストは赤色以外で実行されますか? –

答えて

1

@Bryan Oakleyが強調しているように、これはRobot Frameworkの問題ではなく、Eclipse RED Robot Frameworkエディタのプロジェクト設定の問題です。

私はあなたの設定で何かがプロジェクトの変数マッピングに関して正しくないと思われます。市場から日食を更新するか、GitHubサイトから最新のものをダウンロードすることによって、最新の赤があることを確認してください。私は、新しいプロジェクトを作成し、三つのファイル

project: 
. 
├── red.xml 
├── OR 
| └── ObjectStore.robot 
├── test.robot 
└── resource.robot 

test.robot

*** Setting *** 
Resource resource.robot 
Resource ${OR}/ObjectStore.robot 

*** Test Cases *** 

resource.robot

*** Variable *** 
${OR} OR 

ObjectStore.robot

[EMPTY] 

RED.xmlを追加しました RED.xml variable mapping

これは、その後、私はまた、ハードコーディングされた構成の参照に含めないように助言するだろう、エラーが変更される可能性があり、あなたのオブジェクトストアとしてtest.robot

enter image description here

に示されていないことを保証します。代わりに、add a variableにRobot Frameworkコマンドライン変数の力を使用するか、a variable fileを参照して、ソースコードリポジトリからファイルを取得した後にファイルを変更する必要がなく柔軟性を持たせてください。

+0

これで、Path 'D:/path/ObjectMap.robot'が作業領域外の場所を指しているエラーが発生しました。 $ {OR} /ObjectStore.robot。 D:/ pathは、外部の場所を表示するためのテスト目的として与えられました – Dani

+0

通常、外部に実装されたファイルがある場合、ワークスペース内にテンプレート1を保存し、VariableMappingでそれを参照するために使用します。実行時に外部実装を指定します。つまり、これは警告であり、誤りではないと主張することができます。そのような気がするなら、GitHubに問題を記録してください。 –

0

尋ねられた状況の回避策が見つかりました。リモートマシンからローカルプロジェクトにObjectMapをコピーするコードとしてpyファイルを挿入し、このコードのメソッド名をロボットのキーワードとして使用し、スイート設定で適用しました。ロボットでは、状態が満たされている場合にのみ実行するフラグも作っていました。このフラグは、同一マシン上にオブジェクトマップのさまざまなコピーを作成するコードを同じリモートマシンで実行したい場合に追加されます。

マイPYコード

'def copy_file_from_source_to_destination(self,src,dst):   
    try: 
     shutil.copy2(src, dst) 
    except Exception as e: 
     return str(e) 
    return 'Success' ' 

マイロボットキーワード

'Get Central OR 

    ${DESTINATION}= Catenate ${EXECDIR}${TARGET_OR} 
    Log ${DESTINATION} 
    ${CALL_STATUS}= Convert To Uppercase ${CALL_STATUS} 
    Run Keyword If '${CALL_STATUS}'=='YES' Copy File From Source To Destination ${CENTRAL_OR} ${DESTINATION} 
0

少し遅れて(私はSOにこの質問を見逃している必要があります)、私は上記の問題を総括してみましょう。 REDは変数の値を知らない。変数は、実行中(testlogic、スイート設定、変数ファイルなどのいずれか)に変更することができるので、Variableセクションからの任意の値の割り当ては、REDによってパラメータ化されたパスを解決することはできません。同じことが$ {EXECDIR}などのシステム変数にも適用されます。これは、ロボットの実行開始位置とロボットコマンドの作成方法によって変わります。

別のシナリオでは、入力パラメータ(Robotでテストするソフトウェアのバージョンや種類など)に基づいたCIジョブは、そのバージョンまたはソフトウェアの種類でのみ有効な適切なライブラリまたはリソースを使用するようにパス内の変数を変更します。 VM機構がなければ、テスターはパラメータインポートされたスイートを一時的に変更し、適切なインポート(Nokiaの現実のシナリオとred.xmlのVMの理由)を使用できるようにする必要があります。

したがって、パスに変数を持つすべてのインポートでは、REDは、編集フェーズで使用する一時的な有効値をUSERが指定する必要があるとみなします。

これは、red.xmlの変数マッピングの理由です。変数の値を指定できるため、パスを解決できるため、ファイルをインポートできます。

(githubのアプリケーションとオン)REDヘルプのエントリーもあります:に関するhttp://nokia.github.io/RED/help/user_guide/working_with_RED/variable_mapping.html

警告「何かある外プロジェクト/ワークスペース」 - とき、彼らはテストが動作しない理由を理解するのに役立つ可能性が警告別のマシン上のリポジトリからチェックアウトしていました。すべてのエラー/警告のWindows-> Preferences->ロボットFrameworkで変更することができます - >エラー/警告 ヘルプトピック:http://nokia.github.io/RED/help/user_guide/validation/validation_preferences.html

ご質問や問題がある場合は、RED GitHubのプロジェクトの課題追跡上のものを作成してください。https://github.com/nokia/RED/issues

RED PM

関連する問題