Robot Framework调用Python类connects_to方法报错:方法不存在求助
解决Robot Framework调用Python类方法提示不存在的问题
我来帮你分析问题根源,以及对应的修复方案:
核心问题分析
你遇到的错误主要有两个原因:
connects_to是one类的实例方法,不属于Robot库的直接关键字。在Robot中导入Python类库后,必须先创建类的实例对象,才能调用它的实例方法。- 你的Robot代码里存在字典创建的拼写和语法错误,这也会导致执行异常。
分步修复方案
1. 修正Robot中的字典创建错误
首先修正两处明显的错误:
- 拼写错误:
Create Drictionary→Create Dictionary - 语法错误:键值对应该用
=而非:,即ip:192.38.19.20→ip=192.38.19.20
修正后的字典创建代码:
${dict1}= Create Dictionary device=auto1 ip=192.38.19.20 secret=${EMPTY} uname=Adrija password=Hello port=22
2. 正确创建类实例并调用方法
根据你的Python类设计,有两种方式实现调用connects_to的需求:
方式一:手动创建实例后调用方法
先通过Create Instance关键字生成one类的实例,再通过实例调用connects_to方法:
*** Settings *** Library LibFiles/one.py Library OperatingSystem Library String Library Collections *** Keywords *** Test_1 ${equip1} ${dict1}= Create Dictionary device=auto1 ip=192.38.19.20 secret=${EMPTY} uname=Adrija password=Hello port=22 # 创建one类的实例对象 ${one_instance}= Create Instance one ${dict1} # 通过实例调用connects_to方法 ${one_instance}.connects_to
方式二:利用初始化参数自动触发方法
你的one类__init__方法内置了connect参数,当设置为True时会自动调用connects_to,可以直接在创建实例时传入该参数:
*** Settings *** Library LibFiles/one.py Library OperatingSystem Library String Library Collections *** Keywords *** Test_1 ${equip1} ${dict1}= Create Dictionary device=auto1 ip=192.38.19.20 secret=${EMPTY} uname=Adrija password=Hello port=22 # 创建实例时传入connect=True,自动执行connects_to ${one_instance}= Create Instance one ${dict1} connect=${True}
3. 额外注意事项
- 你的Python代码中
print "stuff"是Python2语法,如果使用Python3环境,需要修改为print("stuff")。 - 确保
ConnectionHandler已正确导入,比如在one.py开头添加from netmiko import ConnectionHandler(如果是基于netmiko库的话),否则Python代码本身会抛出导入异常。
内容的提问来源于stack exchange,提问作者Adrija
相关产品推荐
相关产品推荐

