gpt4 book ai didi

Robotframework 监听器抛出 "Cannot access execution context"错误

转载 作者:行者123 更新时间:2023-12-04 06:44:33 27 4
gpt4 key购买 nike

为了支持另一种日志格式,我开始开发 custom Robotframework Listener .使用指南中的示例,我已经能够复制简单的 PythonListner example .可以使用以下命令成功运行此示例:

python.exe -m robot.run --listener C:\temp\tiny.py -s Test02.Test C:\temp\Test02

由监听器类生成的文件包含已发生的不同事件,并且功能正常工作。

将以下行添加到 __init__类的方法:
BuiltIn().get_variable_value('${SUITE SOURCE}')

收到以下响应:
 failed: Creating instance failed: RobotNotRunningError: Cannot access execution context
Traceback (most recent call last):
File "C:\temp\tiny.py", line 9, in __init__
print repr(BuiltIn().get_variables())
File "C:\Python27\lib\site-packages\robot\libraries\BuiltIn.py", line 940, in get_variables
return utils.NormalizedDict(self._variables.current, ignore='_')
File "C:\Python27\lib\site-packages\robot\libraries\BuiltIn.py", line 2669, in _variables
return self._namespace.variables
File "C:\Python27\lib\site-packages\robot\libraries\BuiltIn.py", line 2661, in _namespace
return self._context.namespace
File "C:\Python27\lib\site-packages\robot\libraries\BuiltIn.py", line 2656, in _context
raise RobotNotRunningError('Cannot access execution context')
==============================================================================
Test02
==============================================================================
Test02.Test
==============================================================================
Process Data File | PASS |
------------------------------------------------------------------------------
Test02.Test | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Test02 | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output: C:\temp\output.xml
Log: C:\temp\log.html
Report: C:\temp\report.html

测试通过,但未生成文件。此结果已在 Python 2.7 和 Robotframework 3.0 和 2.8.5 上复制。这很奇怪,我需要一些帮助来进一步分析或(理想情况下)解决这个问题。

由于 Python 类是由 Robotframework 调用的,我不确定如何继续调试它,所以也请随时提出建议。无论如何,我被卡住了,可以使用你的帮助。

最佳答案

您正在尝试引用 BuiltIn()在测试开始之前。这就是错误 Cannot access execution context 的含义。 :测试还没有开始,所以没有执行上下文。简而言之,您无法访问 BuiltIn 的方法。测试运行之前的库。

您必须等到测试开始运行后才能调用该语句。

例如:

class listener:
ROBOT_LISTENER_API_VERSION = 2

def start_suite(self, name, attrs):
self.suite_source = BuiltIn().get_variable_value('${SUITE SOURCE}')

但是,如果您只需要当前套件的来源,那么该信息可在监听器方法 start_suite 中获得。 .

例如:
class MyListener:
ROBOT_LISTENER_API_VERSION = 2

def start_suite(self, name, attrs):
self.suite_source = attrs["source"]

关于Robotframework 监听器抛出 "Cannot access execution context"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com