Протестируйте функцию Python в Robot Framework

Я новый пользователь и не нашел решения сомнения по поводу выполнения моего скрипта, написанного на питоне, в Robot Framework.

Сценарий работает, когда я запускаю его на компиляторе python, но когда я выполняю тестовый пример на Robot Framework, отображается эта ошибка:

===========================================================================
TestProvaPower
===========================================================================
TestPowerAngelo                                                    | FAIL |
No keyword with name 'power' found.
---------------------------------------------------------------------------
TestProvaPower                                                     | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
===========================================================================
Output:  c:\users\user\appdata\local\temp\RIDEjtznzw.d\output.xml

Я думаю, что эта ошибка проявляется потому, что необходимо передать аргументы и параметры.

Пожалуйста, как я могу передать эти значения в Robot Framework?

Набор тестов:

** Settings **
Library           ../../../../../Users/User/workspace/TestAngelo18.09/TestProva22.py

** Test Cases **
TestPowerAngelo
    power    base    exponent
    push    ${base}    ${exponent} 

Пока мой скрипт Python:

base = input("Insert base")
exponent =input("Insert exponent")

def power(base,exponent):
    result=base**exponent
    print "%d to the power of %d is %d" %(base,exponent,result)

power (base,exponent)

person Ngiulino    schedule 19.09.2013    source источник
comment
Не могли бы вы добавить свой пакет TestProvaPower к вопросу? Похоже, вы неправильно импортировали модуль Python.   -  person mr2ert    schedule 20.09.2013
comment
вы должны удалить все, кроме функции из библиотеки. первая, вторая и последняя строки вызываются только при импорте библиотеки.   -  person kontulai    schedule 02.10.2013


Ответы (3)


В рамках определения вашего модуля вы получаете ввод от пользователя. Когда модуль импортируется, вы не можете использовать стандартный входной поток, поэтому возникает ошибка EOFError. Ниже представлена ​​модифицированная версия вашей библиотеки, которую все еще можно протестировать путем прямого выполнения.

def power(base, exponent):
    result = base**exponent
    return result

if __name__ == '__main__':
    base = input("Insert base")
    exponent = input("Insert exponent")
    result = power(base,exponent)
    print "%d to the power of %d is %d" %(base, exponent, result)
person ombre42    schedule 02.10.2013

Вместо использования сложного пути в импорте библиотеки попробуйте установить путь python с помощью pybot, например.

pybot --pythonpath /path/to/libs/where/py/file/is

И в файле набора тестов импортируйте его, используя только имя, например. без суффикса .py.

Library    TestProva22
person kontulai    schedule 02.10.2013
comment
Спасибо, ребята, я удалил ввод для переменных base и exponent, потому что я использую Robotframework. - person Ngiulino; 02.10.2013

RF по умолчанию обрабатывает аргументы как строки. Для литералов вы можете окружить их ${}, или переменные сначала используют Convert To Integer. Что-то вроде этого должно работать:

${result} =  power   ${2}  ${4}
Should Be Equal As Integers  ${result}  16
person MarkHu    schedule 16.08.2016