python - Robot Framework API - 使用一个类获取测试套件/子套件结果和测试用例结果
问题描述
我有一个带有多个子套件的测试套件。每个子套件中有一个或多个测试用例。例如:
TestSuite
Subsuite-1
TestCase-1
TestCase-2
Subsuite-2
TestCase-1
Subsuite-3
TestCase-1
TestCase-2
TestCase-3
到目前为止,我一直在将此代码与单独的类一起用于套件和测试用例结果:
from robot.api import ExecutionResult, ResultVisitor
class GetRfSuiteResults(ResultVisitor):
suite_results = {}
def visit_suite(self, suite):
self.suite_results[suite.name] = suite.status
class GetRfTestResults(ResultVisitor):
test_results = {}
def visit_test(self, test):
self.test_results[test.parent,test.name] = test.status
由于它们都继承相同ResultVisitor
的内容,是否可以使用这样的一个类来获得结果?
from robot.api import ExecutionResult, ResultVisitor
class GetRfResults(ResultVisitor):
suite_results = {}
test_results = {}
def visit_suite(self, suite):
self.suite_results[suite.name] = suite.status
def visit_test(self, test):
self.test_results[test.parent,test.name] = test.status
我不知道如何visit_test
在这个解决方案中访问。
解决方案
虽然它提到SuiteVisitor
而不是ResultVisitor
我会冒险猜测它的行为相同。从API 文档:
扩展 SuiteVisitor 的访问者可以通过覆盖合适的 visit_x() 方法或通过从任何 start_x() 方法返回显式 False 来停止访问某个级别。
因此,如果您覆盖visit_suite
它将停止访问那里。
如果您想要一个ResultVisitor
同时获取套件和测试状态的工具,您可以尝试以下操作:
class MyResultVisitor(ResultVisitor):
def __init__(self):
self.suite_results = {}
self.test_results = {}
def visit_suite(self, suite):
self.suite_results[suite.name] = suite.status
for test in suite.tests:
self.test_results[test.parent,test.name] = test.status
for suite in suite.suites:
self.visit_suite(suite)
return False
仅访问顶层套件,您也可以递归访问所有子套件及其测试。
推荐阅读
- android - 如何在 DialogFragment 中观察 ViewModel LiveData?
- java - 自定义谓词有时会返回随机结果
- javascript - 获取对象属性名称自引用
- git - 是否有获取 git 模块文件夹的命令行方式?
- javascript - 如何根据输入的小时数添加 PM 或 AM?
- linux - 部署Web UI时“ClusterRoleBinding”kubernetes-dashboard“无效:roleRef:无效值”
- latex - 在 Overleaf 中更改 Zotero 书目语言
- java - 解决 java.lang.ArrayindexOutOfBoundsException
- python - 表单数据不保存到文件(通过 python 中的 CGI)
- java - 将 AWS SageMaker ml 模型转换为 java 库