То, что вы хотите, похоже на серебряную пулю.Это выполнимо, вам не нужно ничего компилировать, но вам все еще нужно написать логику вокруг среды робота.
- Насколько я понял, вам нужно вызывать что-то в 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
Далее нам нужно сравнить содержимое двух файлов ... Предполагая, что вы переместили файлы в удобное место, вы можете написать себе ключевое слово для сравнения содержимого
*** 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.Например, предположим, что вы вычисляете квадратный корень для чисел, присутствующих во входном файле
Как мы храним ожидаемые данные?Предположим, у нас есть файл с именем Ожидаемый. Дата
[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: Код может не работать - я написал его свободно в простом редакторе без подсветки синтаксиса, и яне проверял.