机器人框架 - 获取变量

我正在尝试使用 publicAPI 从report.xml文件中获取变量值。这是报告的样子:

http://img1.sycdn.imooc.com/647ee9af0001a96b05000173.jpg

它有一个变量Var,并为其分配了一个测试值。


我创建了简单的 REST API 来运行测试:


from flask import Flask

from flask import request


from robot import run

from robot import run_cli


app = Flask(__name__)


@app.route('/')

def runRobot():

 robotName = request.args.get('robot')

 robotName = robotName + '.robot'

 rc = run(robotName)

 return str(rc)

我想返回Var变量的值而不是执行代码。我在文档中找不到符合我要求的匹配函数


有可能做到吗?


桃花长相依
浏览 122回答 1
1回答

森栏

对于这种情况,我可以想象的是一个自定义元数据,您可以使用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_clifrom robot.api import ExecutionResult, ResultVisitorclass 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 hererc = run_cli(['SO.robot'], exit=False)# Instantiate result visitorretval = ReturnValueFetcher()# Parse execution result using robot API# assuming the output.xml is in the same folder as the Python scriptresult = ExecutionResult("./output.xml")# Visit the top level suite to retrive needed metadataresult.visit(retval)# Print return valuesprint(f"normal rc:{rc} - custom_rc:{retval.custom_rc}")您的自定义返回值也将在您的 log.html 和 report.html 文件中清晰可见。这是控制台输出:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python