Как импортировать и использовать пользовательские классы в 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)