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

Posted

技术标签:

【中文标题】从现有的 python 包创建机器人框架库【英文标题】:Creating a robot framework library from existing python package 【发布时间】:2016-01-02 07:35:48 【问题描述】:

我的问题是:

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

我希望在robotframework 中使用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

所以我编辑了机器人文件以创建一个包含 key:values 的字典,然后 将其作为参数传递给 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'

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,很好的回答,我唯一要提到的另一件事是我没有将输入作为字典传递,所以错误 |失败 | KeyError: u'device_type' 是由于使用了 connection = ConnectHandler(device) 而不是 connection = ConnectHandler(**device)。它在这里解释***.com/questions/36901/…

以上是关于从现有的 python 包创建机器人框架库的主要内容,如果未能解决你的问题,请参考以下文章

如何从现有的远程分支创建本地分支?

从现有的两列 python 创建唯一 ID

如何从现有的 JavaScript 库生成 .d.ts “类型”定义文件?

机器人框架库动态导入不保持全局

机器学习--Python机器学习库之Numpy

机器人框架:从 python 库导入变量