你想要的似乎是一颗银弹。这是可行的,你不需要编译一个东西,但你仍然需要围绕机器人框架编写一些逻辑。
- 据我了解,您需要在 CLI 中调用一些东西 - 这很简单,机器人已经这样做了
- 它有一个输入文件和一些输出数据 - 微不足道, - 机器人已经这样做了
- 您需要将实际输出数据与预期输出数据进行比较 - 在这里您需要一些麻烦。
- 打包日志 - 机器人已经这样做了。
- 在 Jenkins 中展示它们 - 微不足道 - 机器人已经这样做了。
所以所有繁重的工作已经完成。
调用 CLI - 使用操作系统
*** 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
接下来,我们需要比较两个文件的内容...假设您将文件移动到一个方便的位置,您可以给自己写一个关键字来比较内容
*** 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:代码可能无法运行——我在一个没有语法高亮的简单编辑器中自由地编写了它,我没有测试它。