我有一个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()方法不存在。 请帮忙。
感谢。
答案 0 :(得分:1)
上面的机器人脚本没有用于划分参数的双重空格。我假设这是格式化问题,而不是整体问题的一部分。我还将ip:192..
更改为ip=192..
,并将关键字调用connects_to
更改为Connects To
,
在Python库中定义了两种方法:init
和connect_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对象变量。