如果2个或更多测试失败,如何停止执行测试

时间:2015-10-28 11:00:07

标签: python robotframework qa

你好我有这样的问题,当我试图停止测试,如果2个或更多的测试失败,我使用监听器lib,我检查状态,当状态"失败&#34 ;添加到计数器,当计数器== 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

1 个答案:

答案 0 :(得分:1)

您的代码有几个问题。但是,即使您修复了语法问题,此解决方案也无法正常工作。监听器不能导致测试失败。监听器纯粹是一个观察者,它不能运行关键字。您可以致电__init__,但会立即终止测试,而不会生成报告。

您需要做的是实现每个测试用例调用的关键字,该关键字可以检查监听器定义的计数变量。然后,您可以在每个测试设置或拆解中调用此关键字。

在这个答案中可以看到在同一模块中实现关键字和监听器的示例:https://stackoverflow.com/a/28508009/7432

关于代码中的问题:

首先,方法__end_test__end_test的缩进是不正确的,导致这些函数是全局函数而不是类的方法。

其次,您的count方法每次调用时都会将计数重置为零。您需要使fatal_error成为对象属性。

第三,您错误地呼叫result = BuiltIn.fatal_error(self) 。改变这个:

BuiltIn()

...对此(注意result = BuiltIn().fatal_error("failed due to failure >= 2") 上的括号):

// some flag marking the user is logged in
public static boolean isLoggedIn = false;

// whenever the user logins appropriately
isLoggedIn = true;

// then through the app check it
if(isLoggedIn) .. do stuff

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