[英]Creating a robot framework library from existing python package
我的问题是:
我希望在机器人框架中使用netmiko库。 我使用pip将模块导入我的python env,并使用机器人文件确认其可用。
*** Settings ***
Library netmiko
我现在希望实例化一个“ConnectHandler”,我可以从文档中看到它需要一本字典
https://pynet.twb-tech.com/blog/automation/netmiko.html在python命令行:
>>> from netmiko import ConnectHandler
>>> cisco_881 = {
... 'device_type': 'cisco_ios',
... 'ip': '10.10.10.227',
... 'username': 'pyclass',
... 'password': 'password',
... }
源代码在这里: https : //github.com/ktbyers/netmiko
因此,我编辑了机器人文件以创建包含键:值的字典,然后将其作为参数传递给ConnectHandler。
*** Settings ***
Library netmiko
Library Collections
*** Test Cases ***
My Test
${device}= Create Dictionary device_type cisco_ios
... ip 10.10.10.227
... username pyclass
... password password
Log Dictionary ${device}
ConnectHandler ${device}
结果是
================================================== ============================ Testnetmiko
================================================== ============================我的测试
| 失败| KeyError:u'device_type'
我在这做错了什么?
什么是解决从现有python包创建机器人库的问题的良好工作流程?
从现有包创建库的最佳方法是执行以下操作:创建库。 不要试图直接在机器人测试用例中调用ConnectHandler
方法,而是创建一个关键字。
例如,创建一个名为netmikoKeywords.py的文件,并将代码放在那里。 例如,您可能有一个名为Make Connection
的关键字,可能如下所示:
# netmikoKeywords.py
from netmiko import ConnectHandler
def make_connection(type, ip, username, password):
device = {
'device_type': type,
'ip': ip,
'username': username,
'password': password,
}
connection = ConnectHandler(device)
return connection
如果要在关键字之间保持连接,则可能需要将连接设置为全局变量。 或者,将您的库创建为一个类,并使其成为一个实例变量。
您可以在机器人文件中使用它,如下所示:
*** Settings ***
| Library | netmikoKeywords
*** Test cases ***
| Example
| | ${connection}= | Make connection
| | ... | cisco_ios | 10.10.10.227 | pyclass | password
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.