你好我有这样的问题,当我试图停止测试,如果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
答案 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
但正如我之前所说,您可以在侦听器中调用此关键字,但不会影响您的测试运行。