从现有的python包创建机器人框架库

时间:2015-10-05 15:19:39

标签: python robotframework

我的问题是:

  • 如何在机器人框架中使用ConnectHandler?
  • 什么是解决创建机器人问题的好工作流程 来自现有python包的库?

我希望在机器人框架中使用netmiko库。我使用pip将模块导入我的python env并确认其可用 通过使用机器人文件。

Visibility

我现在希望实例化一个“ConnectHandler”,我可以从文档中看到它需要一个字典

python命令行

https://pynet.twb-tech.com/blog/automation/netmiko.html

*** Settings ***
Library    netmiko

源代码在这里:https://github.com/ktbyers/netmiko

所以我编辑了机器人文件以创建包含键:值的字典,然后 将其作为ConnectHandler的参数传递。

>>> from netmiko import ConnectHandler

>>> cisco_881 = {
...   'device_type': 'cisco_ios',
...   'ip': '10.10.10.227',
...   'username': 'pyclass',
...   'password': 'password',
... } 

结果是

  

=============================================== =============================== Testnetmiko

     

=============================================== ===============================我的测试
  |失败| KeyError:u'device_type'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

  

解决创建机器人问题的好工作流程是什么   来自现有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