【问题标题】:Call Robot Keyword from Python script从 Python 脚本调用机器人关键字
【发布时间】:2018-05-28 02:17:25
【问题描述】:

我有一些用FlowKeywords.txt 编写的机器人关键字,它被用于我的机器人测试用例中。

我可以从 Python 脚本中调用这些关键字吗?

I have checked this link 但它包括在机器人测试用例中导入 Python 文件,然后从机器人端调用它。

我需要在 Python 脚本中使用这些关键字。

这是test.robot 文件

*** Settings ***

*** Test Cases ***
Test
    Example keyword

*** Keywords ***
Example keyword
    log    hello, world

下面是Python文件runkw.py

from robot.libraries.BuiltIn import BuiltIn

def call_keyword(keyword):
    return BuiltIn().run_keyword(keyword)

如何从 Python 文件本身调用 KW 的“示例关键字”?

【问题讨论】:

  • 您能否为您遇到的问题提供minimal reproducible example?这样我们就可以更具体地为您提供帮助,并让我们更深入地了解您的问题。
  • 您是否在问如何在运行测试的上下文之外调用它?如果是这样,那么不,除非您实际运行机器人,否则您不能调用机器人关键字。
  • 是的,这就是我正在检查的内容。在运行测试的上下文之外调用它!。我的想法是有类似 import 'keywordfile.txt' ,调用关键字(“关键字名称”,参数)
  • @BryanOakley:你确定这是不可能的吗?你能指出任何这样说的消息来源吗?
  • @TheHowlingHoaschd 显然这并非完全不可能——它只是软件。您可以重新实现或模拟运行关键字所需的机器人创建的上下文。但是,这需要大量工作,并且没有文档可以帮助您了解需要做什么或如何做。归根结底,您可能最终会重新创建机器人已经在做的事情,那有什么意义呢?要运行机器人关键字,您需要运行run_keyword,这需要BuiltIn 的实例,它需要一个特殊的上下文对象,这需要......等等。

标签: python robotframework


【解决方案1】:

似乎没有官方支持在正在运行的机器人套件之外运行机器人关键字。

如果您只是想访问类似控制台的环境来执行调试命令,您当然可以将其修补到关键字中并从 Robot 运行它。这是我使用 Dialogs 库的(相当笨拙的)实现:

from robot.libraries.Dialogs import get_value_from_user
from robot.libraries.BuiltIn import BuiltIn

def keyword_console():
    """Console for executing keywords"""    
    while True:
        keyword = get_value_from_user("Enter a keyword to run.")
        result = BuiltIn().run_keyword(keyword)
        print(result)

将此关键字插入测试用例,系统会提示您输入要运行的关键字。此准系统版本不适用于参数。这个关键字也可能有用:

def python_console():
    """Console for arbitrary Python code"""
    run_keyword = BuiltIn().run_keyword
    while True:
        statement = get_value_from_user("Enter a Python expression to execute.")
        result = exec(statement)
        print(result) 

【讨论】:

    【解决方案2】:

    我不确定你是否可以直接从 python 调用一个 KW 的机器人文件。可能其他人可以回答。

    但是如果不知道怎么做,我可以使用 python 子进程模块为我执行命令

    所以如果你想从 python 文件中执行 test.robot 文件的 KW 'Example keyword',你可以像下面这样实现它

    runkw.py

    from subprocess import Popen
    
    #-t option help you to run specific  test , shell=true  will allow the command to run as a single statment i.e. pybot -t test running_kw_from_python.robot
    
    p1=Popen(['pybot','-t','Test','running_kw_from_python.robot'],shell=True)
    

    这将运行测试用例 'Test' ,最终运行 'Example keyword'。

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 2021-10-10
      • 2015-01-18
      • 2016-10-01
      • 1970-01-01
      • 2021-07-17
      • 2022-01-06
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多