如果 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")

但正如我之前所说,您可以在侦听器中调用此关键字,但不会影响您的测试 运行。