python - 机器人框架 - 获取变量
问题描述
我正在尝试使用 publicAPI从report.xml文件中获取变量值。这是报告的样子:
它有一个变量Var,为它分配了一个Test值。
我创建了简单的 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变量的值而不是执行代码。我在文档中找不到符合我要求的匹配函数
甚至有可能做到吗?
解决方案
对于这种情况,我可以想象的是自定义元数据,您可以使用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 文件中清晰可见。
这是控制台输出:
推荐阅读
- html - 使用 Parsel 选择器提取类名内容时绕过 em 标签
- angular - 在到达服务器之前,Angular 7 对服务器的所有请求都处于待处理状态
- android - 面临与元素类型“uses-permission”关联的错误“tools:node”未绑定
- google-analytics - 我们如何使用谷歌分析跟踪网站上的 mp4 视频?
- php - Laravel - LoginController::authenticated() 没有在每次登录时触发?
- solr - 尽管退出,Solr 找不到配置文件
- c# - 返回每月的第 4 天而不是第 4 天
- python-3.x - Python:我有文本文件,需要按日期时间数据升序排序
- c++ - OpenCV SVM 分类器 图像识别
- three.js - 三.js如何通过人脸索引找到人脸的顶点?