如果 2 个或更多测试失败,如何停止执行测试?
How to stop execution test if 2 or more tests failed?
你好,当我尝试在 2 个或更多测试失败时停止测试时遇到这样的问题,我正在为此使用侦听器库,我正在检查状态,当状态“FAIL”添加到计数器时,当counter == 2,测试必须停止,但它没有。
from robot.libraries.BuiltIn import BuiltIn
class PythonListener(object):
ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
ROBOT_LISTENER_API_VERSION = 2
def __init__(self):
self.ROBOT_LIBRARY_LISTENER = self
def end_test(self, name, attrs):
global result
global count
count = 0
result = None
print 'Suite %s (%s) start %s.' % (name, attrs['longname'], attrs['status'])
if attrs['status'] == "FAIL":
count += 1
if count >= 2:
result = BuiltIn.fatal_error(self)
return result
您的代码有几处错误。但是,即使您修复了语法问题,此解决方案也不起作用。侦听器不能导致测试失败。一个监听器纯粹是一个观察器,它不能运行关键字。您可以调用 sys.exit()
但这将立即终止测试而不生成报告。
你需要做的是实现一个每个测试用例调用的关键字,它可以检查监听器定义的计数变量。然后,您可以在每个测试设置或拆卸中调用此关键字。
在这个答案中可以看到在同一模块中实现关键字和侦听器的示例:
关于你代码中的问题:
首先,方法 __init__
和 __end_test__
的缩进不正确,导致这些函数是全局函数而不是 class.
的方法
其次,您的 end_test
方法在每次调用时都会将计数重置为零。您需要使 count
成为对象属性。
第三,你打错了fatal_error
。改变这个:
result = BuiltIn.fatal_error(self)
...为此(注意 BuiltIn()
上的括号):
result = BuiltIn().fatal_error("failed due to failure >= 2")
但正如我之前所说,您可以在侦听器中调用此关键字,但不会影响您的测试 运行。
你好,当我尝试在 2 个或更多测试失败时停止测试时遇到这样的问题,我正在为此使用侦听器库,我正在检查状态,当状态“FAIL”添加到计数器时,当counter == 2,测试必须停止,但它没有。
from robot.libraries.BuiltIn import BuiltIn
class PythonListener(object):
ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
ROBOT_LISTENER_API_VERSION = 2
def __init__(self):
self.ROBOT_LIBRARY_LISTENER = self
def end_test(self, name, attrs):
global result
global count
count = 0
result = None
print 'Suite %s (%s) start %s.' % (name, attrs['longname'], attrs['status'])
if attrs['status'] == "FAIL":
count += 1
if count >= 2:
result = BuiltIn.fatal_error(self)
return result
您的代码有几处错误。但是,即使您修复了语法问题,此解决方案也不起作用。侦听器不能导致测试失败。一个监听器纯粹是一个观察器,它不能运行关键字。您可以调用 sys.exit()
但这将立即终止测试而不生成报告。
你需要做的是实现一个每个测试用例调用的关键字,它可以检查监听器定义的计数变量。然后,您可以在每个测试设置或拆卸中调用此关键字。
在这个答案中可以看到在同一模块中实现关键字和侦听器的示例:
关于你代码中的问题:
首先,方法 __init__
和 __end_test__
的缩进不正确,导致这些函数是全局函数而不是 class.
其次,您的 end_test
方法在每次调用时都会将计数重置为零。您需要使 count
成为对象属性。
第三,你打错了fatal_error
。改变这个:
result = BuiltIn.fatal_error(self)
...为此(注意 BuiltIn()
上的括号):
result = BuiltIn().fatal_error("failed due to failure >= 2")
但正如我之前所说,您可以在侦听器中调用此关键字,但不会影响您的测试 运行。