Как создать 2 объекта после импорта библиотек python в Robot Framework - PullRequest
0 голосов
/ 27 апреля 2020

Я импортирую библиотеки python и хотел создать два объекта с разными аргументами и вызовом метода, определенного в классе.

demo.py

class Sample:

    def __init__(self,path,device):
            self.device=device
            self.path = path
            print(self.device)
            print(self.path)

    def getting_path(self):
            print(self.path)
            print(self.device)
            return self.path

demo.robot
===============
*** Settings ***
*** Variables ***
${path}    c:
${device}    samsung
${path1}    D:
${device1}    samsung11
*** Test Cases ***
Test
    Test_python_class
*** Keywords ***

Test_python_class
     Import Library      demo.Sample    ${path1}    ${device1}    
     ${result} =     demo.sample.getting_path
     log     ${result}
     Import Library      demo.Sample    ${path}    ${device}
     ${result1} =     demo.sample.getting_path
     log     ${result1}

Не создается второй объект. $ {result} и {result1} печатают одно и то же значение.

Я могу добиться этого, используя синтаксис ниже, используя имя WITH с двумя значениями. и вызов, как показано ниже, используя WITH NAME

Import Library      demo.Sample    ${path1}    ${device1}    With Name     c1
     ${result} =     c1.getting_path
     log     ${result}
     Import Library      demo.Sample    ${path}    ${device}   With Name     c2
     ${result1} =     c2.getting_path
     log     ${result1}

Но это решение не является оптимальным. Если мне нужно создать 10 объектов с разным значением, мне нужно использовать 10 операторов import здесь.

Оцените, если кто-нибудь может предоставить какие-либо входные данные для оптимального решения, где я могу определить эти шаги как функцию / ключевое слово робота, которая примет эти аргументы для конструктора и вернет мне дескриптор объекта, чтобы мы могли вызывать метод класса, используя различные объект.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Фреймворк робота не предназначен для создания объектов таким способом. Когда вы используете ключевое слово import library (или параметр Library), робот ожидает библиотеку ключевых слов, а не стандартный модуль python.

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

Например, начните с файла SampleLibrary.py , который выглядит следующим образом:

# SampleLibrary.py
from demo import Sample

class SampleLibrary:
    def get_sample(self, path, device):
        return Sample(path, device)

Затем в своем тесте вы сделаете что-нибудь как это:

*** Settings ***
Library  SampleLibrary

*** Test Cases ***
Example
    ${sample1}=  get sample  ${path}   ${device}
    Call method  ${sample1}  getting_path

    ${sample2}=  get sample  ${path1}  ${device1}
    Call method  ${sample2}  getting_path
0 голосов
/ 27 апреля 2020

Вы можете внести следующие изменения, чтобы он заработал

  1. Переименуйте свой класс python в имя файла.

demo.py

class demo:

def __init__(self,path,device):
        self.device=device
        self.path = path
        print(self.device)
        print(self.path)

def getting_path(self,path2,device2):
    self.path=path2
    self.device=device2
    print(self.path)
    print(self.device)
    return self.path

Импорт класса в разделе настроек

Использование функции [Шаблон] для управления данными KW

demo.robot

    *** Settings ***
Library     demo.py     path=${path}   device=${device}        WITH NAME    mylib
*** Variables ***
${path}    f:
${device}    samsung

*** Test Cases ***
Test
    [Template]  Test_python_class
    c:  samsung
    d:  HTC
    e:  Yahoo
    f:  Sony

*** Keywords ***
Test_python_class
    [Arguments]  ${arg1}  ${arg2}
     ${result} =     mylib.getting path  ${arg1}    ${arg2}
     log to console     ${result}

Выход

==============================================================================
Test                                                                  c:
.d:
.e:
.f:
Test                                                                  | PASS |
------------------------------------------------------------------------------

Вы можете увеличивать количество параметров, как показано в тестовом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...