【问题标题】:Robot SSHLibrary pass ssh connection to my library class机器人 SSHLibrary 将 ssh 连接传递给我的库类
【发布时间】:2018-03-23 10:41:26
【问题描述】:

目前我使用 SSHLibrary 在测试套件文件或关键字文件中执行 ssh 命令。是否可以在我当前的库文件中执行此操作?这意味着我的库函数现在只是形成字符串。我想在库文件的 ssh 连接中执行它。

test/testsuit.robot

*** Settings ***
Library         SSHLibrary
Library         ${EXEC_DIR}/lib/mylib.py  WITH NAME  llib
Suite Setup     open_connection_and_login
Suite Teardown  Close All Connections

*** Variables ***
${HOST}      10.x.x.x.x
${USERNAME}  myuser
${PASSWORD}  mypassword

*** Test Cases ***
example test
    ${sshstring}= llib.form_the_sshstring   ls
    ${output}=  Execute Command     {sshstring}

*** Keywords ***
open_connection_and_login
    Open Connection  ${HOST}
    Login  ${USERNAME}  ${PASSWORD}

lib/mylib.py

def form_the_sshstring(input):
    sshstring = "{}".format(ls)
    return sshstring

期待类似..

*** Test Cases ***
example test
    ${output}= llib.run_the_sshstring   ls

/lib/mylib.py

import SSHLibrary
    def run_the_sshstring(input):
        sshstring = "{}".format(ls)
        out = SSHLibrary.SSHCleint(sshstring)
        return out

【问题讨论】:

  • 我不太清楚你的问题。会有什么区别?你想达到什么目的?您提供的代码没有按预期工作吗?

标签: robotframework robotframework-sshlibrary


【解决方案1】:

从您的库文件中,您可以使用内置关键字Get Library Instance 获得对导入的SSHLibrary 的引用——因此,它是关键字。这样就可以调用SSHLibrary关键字Execute Command

示例:

# mylib.py
from robot.libraries.BuiltIn import BuiltIn

def run_the_sshstring(input):
    sshlib = BuiltIn().get_library_instance("SSHLibrary")
    result = sshlib.execute_command(input)
    return result

【讨论】:

  • 你是救世主,谢谢!
  • 还有一个问题,是否可以激活 sshClient 或将客户端传递给我的自定义 library.py?因为如果我使用 get_library_instance 会导致 libdoc 出现问题。
  • @WoodChopper:可能。我没试过。您可以从测试中调用get_library_instance,并将结果传递给您的关键字。
猜你喜欢
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 2013-09-06
相关资源
最近更新 更多