我有一个带有多个子套件的测试套件。每个子套件中有一个或多个测试用例。例如:
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。
发布于 2020-09-24 10:00:18
虽然它提到的是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只访问顶级套件,您也可以递归地访问所有子套件及其测试。
https://stackoverflow.com/questions/64029520
复制相似问题