2013-03-13 11 views
0

Я хотел бы передать набор именованных переменных с ключевым словом: Как это:Использование именованных аргументов в рамках робота

| | Bypass | environment=${SystemUnderTest} | device=android | 

ключевое слово определяется в питона так:

def Bypass(**kwargs): 
    print "kwargs", kwargs 

Это терпит неудачу с этим сообщением об ошибке:

Ключевое слово '' agents.Bypass ожидается 0 аргументов, получил ...

, но если я немного изменить определение ключевого слова, например

def Bypass(*args): 
    print "args", args 

тестовых работ, и я получаю это в моем журнале:

INFO арг (u'environment = постановка», u'device = android ')

Как я могу просто передать мои названные аргументы?

+0

Новые версии базы Robot, кажется, поддерживают ключевые аргументы, как показано в первом подходе. – jotrocken

ответ

2

Afaik это не то, что вы можете сделать из ключевых слов. Если мне нужно было что-то это гибкое мое решение было бы таким образом:

def bypass(kwargs): 
    print "kwargs", kwargs 

| | ${kwargs}= | Evaluate | dict(environment=${SystemUnderTest}, device=android) 
| | Bypass | ${kwargs} 

Или же

def bypass(*args): 
    kwargs = {} 
    while args: 
     kwargs[args.pop(-2)] = args.pop() 
    print "kwargs", kwargs 

| | Bypass | environment | ${SystemUnderTest} | device | android 
+0

Спасибо, это более или менее то, что я делал, и код становится все более и более нечитаемым. Я пытался это исправить. Но кажется, что лучший способ - использовать как структурированный объект Data. –

+0

Хммм - это сигнализирует мне, что вы пытаетесь обрабатывать слишком сложную логику в вашем коде robotframework и должны расщеплять его больше на библиотеки python, но, очевидно, я не могу быть уверен, не увидев ваш код – theheadofabroom

Смежные вопросы