Фреймворк робота - примеры из документации google не работают

Я только начал работать над фреймворком Robot (тоже только начал изучать Python ...). Всякий раз, когда я пытаюсь запустить несколько примеров кода из документов Google, у меня возникают различные ошибки. Прошу прощения за свое невежество, но я хочу знать, в чем я ошибаюсь. Пример: я копирую этот код из кода Google, но он не работает.

:FOR    ${var}  IN  @{VALUES}
Continue For Loop If    '${var}' == 'CONTINUE'  

Что должны содержать мои переменные values ​​/ var, чтобы он работал. Он всегда генерирует «НЕ исключение ключевого слова». Я не установил Jython BTW. Надо ли его устанавливать?

Кроме того, как я могу использовать ключевое слово «МЕТОД ВЫЗОВА».

Call Method ${hashtable} isEmpty

не работает. Даже если я инициализирую хеш-таблицу каким-то val или устанавливаю значение none.

РЕДАКТИРОВАТЬ :

TC 01
     FOR    ${item} IN  @{list}
       Log  ${item}

Я пытаюсь запустить приведенный выше код. Я определил и список, и элемент (я думаю, что объявление элемента как переменной не нужно, поправьте меня, если я ошибаюсь). Теперь, когда я пытаюсь запустить этот код, я получаю «For» - это ошибка зарезервированного ключевого слова. Если я попытаюсь вставить '\' перед LOG или FOR, появится сообщение: «Нет ключевого слова С именем '\ FOR' FOUND». . Что я делаю неправильно??


person TheLostMind    schedule 31.10.2013    source источник


Ответы (1)


С Robot Framework вам не нужен Jython, это просто вариант. Python - это все, что вам нужно.

Ваш цикл for недействителен, он должен быть таким:

*** Variables ***
@{list}           foo    bar    lorem    ipsum    dolor    sit    amet

*** Test Cases ***
Example
    : FOR    ${item}    IN    @{list}
    \    Log    ${item}

Если вы сохраните это как example.txt и запустите pybot example.txt в том же каталоге, он передает и регистрирует все элементы list по отдельности.

Чтобы использовать Call Method, вам нужен объект с методами для вызова. Таким образом, у вас должен быть файл python, в котором есть класс, функция, и этот класс создан и назначен переменной. Нравится:

class MyObject:
    def __init__(self):
        self.args = None
    def my_method(self, *args):
        self.args = args

obj = MyObject()

и сохраните это в vars.py (тот же каталог, что и example.txt), а затем поместите это в свой example.txt

*** Settings ***
Variables         vars.py

*** Variables ***
@{list}           foo    bar    lorem    ipsum    dolor    sit    amet

*** Test Cases ***
Example
    : FOR    ${item}    IN    @{list}
    \    Log    ${item}

Example2
    Call Method    ${obj}    my_method
    Should Be True    ${obj.args} == ()
    Call Method    ${obj}    my_method    arg
    Should Be True    ${obj.args} == ('arg',)
    Call Method    ${obj}    my_method     a1     a2
    Should Be True    ${obj.args} == ('a1','a2')

Но я предполагаю, что на данном этапе вы действительно не хотите использовать Call Method.

person Harri    schedule 31.10.2013
comment
Большое спасибо. Но что вы имеете в виду под вашим циклом for недействителен, он должен быть таким: Я скопировал фрагмент кода цикла for из документации Google. Тем не менее я согласен с вами. синтаксис, который я использовал, не имеет для меня никакого смысла. - person TheLostMind; 31.10.2013
comment
:FOR ${var} IN @{VALUES} Continue For Loop If '${var}' == 'CONTINUE' означает, что цикл FOR не содержит ключевых слов. Перед ключевым словом Continue For Loop If необходимо поставить \ . - person Harri; 31.10.2013
comment
Теперь это работает ... Мой синтаксис был неправильным. Ошибка SPACING с моей стороны. Один вопрос, почему мы используем \. Какой цели это служит? - person TheLostMind; 31.10.2013
comment
Пожалуйста, прочтите пример, который я вам привел. Особенно обратите внимание на цикл for и строку после него. Это не FOR, это :FOR. И строка после него начинается с \ и не менее двух пробелов. Зачем нам туда вставлять \ ? Потому что это синтаксис. Почему Пекка Кларк (stackoverflow.com/users/38083/pekka-klarck), изобретатель Robot Framework, решил для такого синтаксиса? Я не знаю. - person Harri; 31.10.2013