为了账号安全,请及时绑定邮箱和手机立即绑定

机器人框架 - 获取变量

机器人框架 - 获取变量

桃花长相依 2023-06-06 16:09:04
我正在尝试使用 publicAPI 从report.xml文件中获取变量值。这是报告的样子:它有一个变量Var,并为其分配了一个测试值。我创建了简单的 REST API 来运行测试:from flask import Flaskfrom flask import requestfrom robot import runfrom robot import run_cliapp = Flask(__name__)@app.route('/')def runRobot(): robotName = request.args.get('robot') robotName = robotName + '.robot' rc = run(robotName) return str(rc)我想返回Var变量的值而不是执行代码。我在文档中找不到符合我要求的匹配函数有可能做到吗?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

对于这种情况,我可以想象的是一个自定义元数据,您可以使用Set Suite Metadata关键字将其设置为您想要的任何值。

然后您可以创建一个小的ResultVisitor来检索所需的元数据。我在下面的示例中使用 Robot Framework 3.1.2。

示例(SO.robot):

*** Test Cases ***
Test 
   Set Suite Metadata    My Return Value    My VALUE    append=True    top=True

调用 Robot CLI 和 ResultVisitor 的 Python 文件:

from robot import run_cli

from robot.api import ExecutionResult, ResultVisitor


class ReturnValueFetcher(ResultVisitor):


    def __init__(self):

        self.custom_rc = None


    def visit_suite(self, suite):

        try:

            self.custom_rc = suite.metadata["My Return Value"]

        except KeyError:

            self.custom_rc = 'Undefined' # error, False, exception, log error, etc.

        

        # Only visit the top suite

        return False


# Run robot, exit=False is needed so the script won't be terminated here

rc = run_cli(['SO.robot'], exit=False)


# Instantiate result visitor

retval = ReturnValueFetcher()


# Parse execution result using robot API

# assuming the output.xml is in the same folder as the Python script

result = ExecutionResult("./output.xml")


# Visit the top level suite to retrive needed metadata

result.visit(retval)


# Print return values

print(f"normal rc:{rc} - custom_rc:{retval.custom_rc}")

您的自定义返回值也将在您的 log.html 和 report.html 文件中清晰可见。

//img1.sycdn.imooc.com/647ee9d200019cdc06480248.jpg

这是控制台输出:

//img4.sycdn.imooc.com/647ee9dd00011ecb06470269.jpg


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信