【问题标题】:Creating instances of python class from Robotframework从 Robotframework 创建 python 类的实例
【发布时间】:2018-01-10 03:57:05
【问题描述】:

我对机器人框架很陌生。我正在尝试从 Robot 框架创建一个 python 类的对象。 以下是python代码:

class sample():
  def __init__(self,dict1,connect=True):
     self.device=dict1['device']
     self.ip=dict1['ip']
     self.uname=dict1['uname']
     self.password=dict1['password']
     self.dict1={'device':self.device,'ip':self.ip,'uname':self.uname,password:self.password}
     self.is_connect=False
     self.is_config_mode=False
     if connect:
        self.connects_to()
  def connect_to(self):
     print('stuff')

我需要在 Robot 文件中创建一个类样本的对象,并用它来调用其他后续方法。 我所做的是:

*** Settings ***
Documentation     Testing connection
Library Collections
Library RequestsLibrary
Library      sample.sample  ${dict1}    WITH NAME    obj

变量

*** Keywords ***
Test_Connection ${name}  
   [Documentation]    Testing connection
   ${a}=    obj.connect_ssh  

我收到以下错误:

测试库“样本”需要 1 到 2 个参数,得到 0。

请帮助。谢谢。

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    这个答案继续我对你的earlier question 的回答中提供的示例 使用Library xxx WITH NAME xxxyyy 格式确实可以多次加载相同的库。

    然后您可以使用与原始语法相同的语法访问它的所有对象属性。在下面的示例中,您将找到一个示例,其中 IP 属性在每个对象中拥有不同的值:

    *** Settings ***
    Library  one
    Library  one    WITH NAME    two
    Library  Collections
    
    *** Test Cases ***
    Test Case
        ${dict1}=  Create Dictionary  device=auto1  ip=192.38.19.21  secret=${EMPTY}  uname=Adrija  password=Hello port=22
        ${dict2}=  Create Dictionary  device=auto2  ip=192.38.19.22  secret=${EMPTY}  uname=Adrija  password=Hello port=22
    
        one.connects to  ${dict1}  connect=${True}
        two.connects to  ${dict2}  connect=${True}
    
        ${one}    Get Library Instance    one
        ${two}    Get Library Instance    two
    
        Should Be Equal As Strings   ${one.ip}     192.38.19.21
        Should Be Equal As Strings   ${two.ip}     192.38.19.22
    

    【讨论】:

    • 非常感谢@A.Kootstra 的帮助
    【解决方案2】:

    我不确定传递给 ${dict1} 的值是什么,我对您的代码进行了一些小修改,这可以导入库 'sample.py'

    我的 .py 和 .robot 文件都在同一个文件夹中

    *** Settings ***
    Documentation     Testing connection
    Library    OperatingSystem
    Library    String
    Library    Collections
    Library    RequestsLibrary
    Library    DateTime
    Library    sample.sample    ${dict1}    WITH NAME    obj
    ***Variables***
    ${dict1}    Test
    *** Test Cases ***
    Test_Connection_String
        Test_Connection    name
    
    *** Keywords ***
    Test_Connection
       [Arguments]    ${name}
       [Documentation]    Testing connection
       obj.connect_to
    

    【讨论】:

    • 非常感谢@pankaj mishra
    【解决方案3】:

    所以这就是我所做的。 :)

    Library LibFiles/sample.py  WITH NAME    obj_1
    Library LibFiles/sample.py  WITH NAME    obj_2
    
    *** Keywords ***
    Test_Connection ${Juniper_mse}  
      [Documentation]    Testing connection
    
      obj_1.connect_ssh
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多