Я пытаюсь запустить main () из моего теста python из моего RF-файла с необязательным диапазоном аргументов ключевого слова, доменом и временем ожидания.Тест работает нормально, если я жестко закодировал аргументы в RF-файле, но я надеюсь, что смогу установить их из командной строки.Я надеюсь, что смогу запустить файл RF, выдав любой, все или ни один из 3 аргументов, перечисленных выше, с чем-то похожим на robot -v dict_args:range=5_domain=4 -E space=_ run_test.robot
.Согласно документации, «с помощью этого синтаксиса можно задавать только скалярные переменные, и они могут получать только строковые значения», но я видел здесь людей, которые могут написать обходной путь для списков ( Как передать списокв качестве аргумента командной строки в каркасе робота .?).Если бы не удалось найти что-либо о диктантах, любой совет / помощь будет принята с благодарностью.
run_test.robot:
*** Settings ***
Library my_test
Library Process
*** Test Cases ***
Run RNTester
Run Program ${dict-args}
*** Keywords ***
Run Program
[Arguments] &{configuration}
main &{configuration}
my_test.py:
def main(**kwargs):
#process args
if 'range' in kwargs:
range_ = kwargs['range'].split(':')
range_ = list(map(int,range_))
if len(range_) == 1:
range_.insert(0,0)
test_count = range_[1] - range_[0]
else:
range_ = None
test_count = 0
if 'domain' in kwargs:
domain = kwargs['domain'].split(',')
else:
domain = None
if 'timeout' in kwargs:
timeout = int(kwargs['timeout'])
else:
timeout = 30
run_test(domain, range_, test_count, timeout)
FIXED Отредактировал мой код для записи в файл yaml как @Джил предложил.Добавлен YAMLCreator.py для создания файла yaml, который импортирует мой RF-файл.Вот что у меня сейчас есть
run_test.robot:
*** Settings ***
Library my_test
Variables ${testname}.yaml
*** Test Cases ***
Run RNTester
Run Program &{test_name}
*** Keywords ***
Run Program
[Arguments] &{configuration}
main &{configuration}
YAMLCreator.py:
import yaml
import sys
def make_dict(**kwargs):
data = dict()
for key in kwargs:
value = kwargs[key]
data[key] = value
return data
if __name__ == '__main__':
args = sys.argv
test_name = args[1]
data = make_dict(**dict(arg.split('=') for arg in args[2:]))
test_name_dict=dict()
test_name_dict[test_name] = data
with open(test_name + '.yaml', 'w') as outfile:
yaml.dump(test_name_dict, outfile, default_flow_style=False)