从现有 python 包创建机器人框架库
Creating a robot framework library from existing python package
我的问题是:
- 如何在 robotframework 中使用 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
============================================================================== My Test
| FAIL | KeyError: u'device_type'
我做错了什么?
What is a good workflow to solve the problem of creating robot
libraries from existing python packages?
从现有包创建库的最佳方法就是:创建一个库。不要尝试直接在机器人测试用例中调用 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
如果您希望关键字之间的连接持续存在,您可能需要将连接设置为全局变量。或者,将您的库创建为 class 并使其成为实例变量。
您可以像这样在您的机器人文件中使用它:
*** Settings ***
| Library | netmikoKeywords
*** Test cases ***
| Example
| | ${connection}= | Make connection
| | ... | cisco_ios | 10.10.10.227 | pyclass | password
我的问题是:
- 如何在 robotframework 中使用 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
============================================================================== My Test
| FAIL | KeyError: u'device_type'
我做错了什么?
What is a good workflow to solve the problem of creating robot libraries from existing python packages?
从现有包创建库的最佳方法就是:创建一个库。不要尝试直接在机器人测试用例中调用 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
如果您希望关键字之间的连接持续存在,您可能需要将连接设置为全局变量。或者,将您的库创建为 class 并使其成为实例变量。
您可以像这样在您的机器人文件中使用它:
*** Settings ***
| Library | netmikoKeywords
*** Test cases ***
| Example
| | ${connection}= | Make connection
| | ... | cisco_ios | 10.10.10.227 | pyclass | password