Как импортировать и использовать пользовательские классы в Robot framework с python
Предположим у меня есть класс в Python:
class TestClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def print_args(self):
print arg1, arg2
Я хочу использовать robotframework
для реализации моих тестовых сценариев. Я хочу сделать экземпляр из класса выше и вызвать его методы. Как это сделать? Я знаю, как импортировать lib; это должно быть так:
Library TestClass
Я не знаю, как инициализировать объект из этого класса и вызывать методы класса через этот объект. Если бы я хотел реализовать его с python, я бы написал какой - то фрагмент кода, например это:
import TestClass
test = TestClass('ARG1', 'ARG2')
test.print_args()
теперь, я хочу знать, как написать это в robotframework
. Любой помочь?
2 ответов
импортировать библиотеку с аргументами, просто добавить после имени библиотеки:
Library TestClass ARG1 ARG2
таким образом," импорт " и создание экземпляра выполняются одним выстрелом. Теперь, вещь, которая может быть сложно понять объем вашего экземпляра. Это хорошо объясняется в разделе руководства пользователя"Область Тестирования Библиотеки":
для каждого тестового случая создается новый экземпляр. [...] Это значение по умолчанию.
обратите внимание, что если вы хотите импортировать одну и ту же библиотеку несколько раз с разными аргументами и, следовательно, иметь разные экземпляры ваших классов, вам придется назвать их при импорте:
Library TestClass ARG1 ARG2 WITH NAME First_lib
Library TestClass ARG3 ARG4 WITH NAME Second_lib
и затем в ваших тестах вы должны префикс ключевых слов:
*** Test Cases ***
MyTest
First_lib.mykeyword foo bar
Second_lib.mykeyword john doe
Это объясняется в этот раздел руководства пользователя.
я смог создать экземпляр классов python по требованию (т. е. не только жестко закодированные args, как с помощью метода библиотеки).
я использовал вспомогательный метод для создания класса. Я не смог заставить скрипт робота вызвать конструктор класса напрямую, однако он может вызывать функции в Python, поэтому мы можем создать класс или namedtuple, предоставив функциональный интерфейс:
File: resource_MakeMyClass.robot
*** Settings ***
Library myClass
*** Keywords ***
_MakeMyClass
[Arguments] ${arg1} ${arg2}
${result} = makeMyClass ${arg1} ${arg2}
[Return] ${result}
-----------------------------------------------------
File: myClass.py
class MyClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def makeMyClass(arg1, arg2):
return MyClass(arg1, arg2)