Robotframework 将终端命令错误填充到Robot框架报告中

Robotframework 将终端命令错误填充到Robot框架报告中,robotframework,Robotframework,Robot框架的新功能-快速问题: 通过Robot Framework执行的命令在终端上生成错误转储。我想找出错误并将其填入Robot Framework报告中的log.htmls1-t1中 以下是我的Python代码: from test.testing import testcase from testers import * def run_testcase(): main(module=testcase, action='simulate') 以下是我的机器人框架代码

Robot框架的新功能-快速问题: 通过Robot Framework执行的命令在终端上生成错误转储。我想找出错误并将其填入Robot Framework报告中的log.htmls1-t1中

以下是我的Python代码:

from test.testing import testcase
from testers import *

def run_testcase():
        main(module=testcase, action='simulate')
以下是我的机器人框架代码:

*** Settings ***
Library                testing_testcase.py


*** Test Cases ***
Testing the testcase - (TC462)
  Run testcase
我想要的只是一些关于如何在终端中捕获命令生成的错误并将其填充到Robot Framework报告中的帮助

这些是我想在报告中记录的垃圾。此命令是手动运行的:

Johns-MacBook-Pro:~ john.doe$ ~/models/.venv/bin/python /Users/john.doe/models/cores/mumimo/pycores/mumimo/testing_testcase.py simulate
Traceback (most recent call last):
  File "/Users/john.doe/models/cores/mumimo/pycores/mumimo/testing_testcase.py", line 138, in <module>
    main3()
  File "/Users/john.doe/models/src/mymytask/mymytask.py", line 529, in main3
    env = environment()
  File "/Users/john.doe/models/.venv/src/mytask/mytask/_block.py", line 125, in __call__
    self.srcline, *args, **kwargs)
  File "/Users/john.doe/models/.venv/src/mytask/mytask/_block.py", line 158, in __init__
    self.subs = _flatten(func(*args, **kwargs))
  File "/Users/john.doe/models/src/mymytask/mymytask.py", line 527, in environment
    tb = args.testbench(ports, params)
  File "/Users/john.doe/models/.venv/src/mytask/mytask/_block.py", line 125, in __call__
    self.srcline, *args, **kwargs)
  File "/Users/john.doe/models/.venv/src/mytask/mytask/_block.py", line 158, in __init__
    self.subs = _flatten(func(*args, **kwargs))

如果终端上生成的错误意味着关键字失败,并且在运行期间在conosle中看到它,则使用关键字-它返回2个变量、嵌入关键字的状态以及成功时的输出,或者在所需情况下返回失败时的错误/异常

因此,测试用例的主体将是:

Testing the testcase - (TC462)
    ${rc}  ${msg}    Run Keyword And Ignore Error    Run testcase
    Run Keyword If    '${rc}' == 'FAIL'    Log    The error is: ${msg}
               ...    ELSE    Log the keyword did not fail, its output is: ${msg}

    Run Keyword If    '${rc}' == 'FAIL'    Fail    Failing the case, the keyword failed
看看更新后的问题,在我看来,您不仅要记录特定的异常——这将在上述代码中发生,而且还要记录完整的堆栈跟踪

如果是这样的话,python代码中应该做一个更改——您必须获取并将其作为函数的一部分返回

有一个python模块专门用于此目的——回溯,更具体地说是它的。这是一个如何实现的示例,请根据您的需要对其进行调整:

import traceback
from test.testing import testcase
from testers import *

def run_testcase():
    try:
        main(module=testcase, action='simulate')
    except Exception as e:
        tb = traceback.format_exc()
        raise Exception(tb)

因此,任何异常都会被捕获,这是一个广域网,您可能希望将其更改为更具体的内容,堆栈跟踪以字符串形式存储在tb中,然后重新调用-因此RF会捕获它,将关键字标记为失败,第一部分中的代码会记录它。

谢谢@Todor-非常有用。但是,运行期间的控制台错误是多行的,并且您提供的代码仍然不会记录转储到控制台上的所有错误消息。此外,现在这个测试被标记为PASS,即使它应该被标记为FAIL。我将把它添加到答案中;你在控制台中看到了什么,你想在日志中显示什么,我在日志中添加了我想显示的内容。谢谢你的帮助。顺便说一句,@pythonian检查一下答案中的更新,我想我们已经到了:太好了@Todor对python脚本做了更改-我应该在RF端做什么?