从机器人文件中调用python中的类内部的方法

时间:2018-01-07 06:15:44

标签: python-3.x robotframework

我有一个python类,文件名是one.py

class one:
   def __init__(self,dict1,connect=False):
       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,self.password:self.password}
       self.is_connect=False
       self.is_config_mode=False
       if connect:
         self.connects_to()
   def connects_to(self):
       netconn=ConnectionHandler(self.dict1)
       print "stuff"

我需要从机器人文件中调用函数connecting_to。

*** Settings ***
Library LibFiles/one.py
Library OperatingSystem
Library String
Library Collections
*** Keywords ***
Test_1 ${equip1}
${dict1}= Create Drictionary device=auto1 ip:192.38.19.20 secret=${EMPTY} uname=Adrija password=Hello port=22
${a}= connects_to ${dict1} connect=${True}

但我得到的错误是connect_to()方法不存在。 请帮忙。

感谢。

1 个答案:

答案 0 :(得分:1)

上面的机器人脚本没有用于划分参数的双重空格。我假设这是格式化问题,而不是整体问题的一部分。我还将ip:192..更改为ip=192..,并将关键字调用connects_to更改为Connects To

在Python库中定义了两种方法:initconnect_to。在Robot Framework中,这两个方法映射到以下事件:加载库Library /LibFiles/one.py和调用关键字connect to

主要问题是当您加载库时,您没有指定所需的变量。在下面的机器人示例中,我在variables部分指定变量,然后使用settings部分中的变量。

*** Settings ***
Library  one    ${dict1}    connect=${True}

*** Variables ***
&{dict1}    device=auto1  ip=192.38.19.20  secret=${EMPTY}  uname=Adrija  password=Hello port=22

如果您不想在加载时建立连接,但在连接时,则需要在Connects To关键字中指定代码和变量。以下是修改后的代码。

<强> one.py

class one(object):

    ROBOT_LIBRARY_VERSION = 1.0

    def __init__(self):
       pass

    def connects_to(self, dict1=False, connect=False):
       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,self.password:self.password}
       self.is_connect=False
       self.is_config_mode=False

       # netconn=ConnectionHandler(self.dict1)
       print "stuff"

机器人脚本

*** Settings ***
Library  one
Library  Collections

*** Test Cases ***
Test_1
    ${dict1}=  Create Dictionary  device=auto1  ip=192.38.19.20  secret=${EMPTY}  uname=Adrija  password=Hello port=22
    ${a}=  Connects To  ${dict1}  connect=${True}

Test_2
    ${one}    Get Library Instance    one
    ${one.ip}    Set Variable    123.123.123.123
    ${test}    Set Variable    ${one.ip}
    Log To Console    ${test}  

应该注意的是,某些编辑器在预加载关键字发现库时可能会遇到问题。它们通常加载库而不将任何变量传递给init方法,从而导致错误。只需允许默认值并检查它们就可以解决这个问题。

编辑:添加了第二个示例,用于将值直接关联到Python对象变量。