あなたが望むものは特効薬のようです。実行可能です。何かをコンパイルする必要はありませんが、ロボット フレームワークに関するいくつかのロジックを記述する必要があります。
- 私が理解している限り、CLIで何かを呼び出す必要があります-これは簡単です.ロボットはすでにこれを行っています
- 入力ファイルといくつかの出力データがあります - 些細なことです - ロボットはすでにこれを行っています
- 実際の出力データと予想される出力データを比較する必要があります。
- ログをパッケージ化します - ロボットはすでにこれを行っています。
- それらをJenkinsに提示します-簡単です-ロボットはすでにこれを行っています。
したがって、すべての重労働はすでに完了しています。
CLI の呼び出し - OperatingSystem を使用
*** Settings ***
Library OperatingSystem
*** Test Cases ***
Basic test
Run Me A Command simcode.exe -j input01.inp
*** keywords ***
Run Me A Command
[Arguments] ${command}
${rc} ${output} = Run and Return RC and Output ${command}
Log ${output}
Should Be Equal As Integers ${rc} 0
Should Not Contain ${output} FAIL
入力に柔軟なアプローチが必要な場合
*** settings ***
Library OperatingSystem
*** Test Cases ***
Combinations
[Template] Basic test
input01.inp
input02.inp
input03.inp
*** keywords ***
Basic test
[Arguments] ${input}
Run Me A Command simcode.exe -j ${input}
Run Me A Command
[Arguments] ${command}
${rc} ${output} = Run and Return RC and Output ${command}
Log ${output}
Should Be Equal As Integers ${rc} 0
Should Not Contain ${output} FAIL
次に、2 つのファイルの内容を比較する必要があります...ファイルを便利な場所に移動したと仮定すると、内容を比較するためのキーワードを自分で書くことができます。
*** settings ***
Library OperatingSystem
*** Test Cases ***
Combinations
[Template] Basic test
../resources/input01.inp ../resources/expectedoutput01.out
../resources/input02.inp ../resources/expectedoutput02.out
../resources/input03.inp ../resources/expectedoutput03.out
*** keywords ***
Basic test
[Arguments] ${input} ${expected_output}
Run Me A Command simcode.exe -j ${input}
Log File output.data
Compare Files ${expected_output} output.data
コンテンツが ini 形式のパラメーターのリストであると仮定しましょう。たとえば、入力ファイルにある数値の平方根を計算するとします。
期待されるデータをどのように保存しますか? expected.dat というファイルがあるとします。
[defaults]
n_1=1
n_4=2
n_9=3
そして、output.data があります。
[defaults]
n_1=1
n_4=2
n_9=2
次に、ファイル コンパレータを自分で作成する必要があります。ファイルが同一であると確信している場合は、diff と OperatingSystem ライブラリを使用するか、次のような単純なコンパレータを記述できます。
def get_param(self,theFile)
config = ConfigParser.RawConfigParser()
config.read(theFile)
return config.items("defaults")
def compareMyDict(self, expected, actual): #There are better ways of doing this
for k, v in actual:
if v != expected[k]:
print("error message")
print(k)
print(v)
print(expected[v])
#print whatever you deem fit
return
print("Matched OK " + str(k))
print(k)
print(v)
print(expected[v])
def compare_files(self, expectedFile, actualFile):
'''
From sourceFile formatted
[defaults]
key=value
'''
d1 = get_param(expectedFile)
d1 = get_param(actualFile)
compareMyDict(d1,d2)
checkLenghts(d1,d2)
criteria2(d1,d2)
#etc.
4 と 5. 実行後、パブリッシュ アーティファクト プラグインとパブリッシュ ロボット結果プラグインを使用して、適切にフォーマットされた出力を Jenkins に渡します。
出来上がり!
PS: コードが実行されない可能性があります。単純なエディターで構文を強調表示せずにフリースタイルで記述したため、テストしていません。