Robotframework 如何告诉robot framework不要记录关键字?

Robotframework 如何告诉robot framework不要记录关键字?,robotframework,Robotframework,在robot框架测试用例中,我设置了一个变量,然后执行一个过程 因为变量的设置不是一个非常有趣的信息,所以我不想在我的报告中包含它 | Verifying STUFF | | | ${endpoint}= | set variable | STUFF | | Verify 我的报告包括: KEYWORD: ${endpoint} = BuiltIn.Set Variable STUFF 但我宁愿不把它放在那里。我怎样才能告诉Robot Framework不要记录这一行呢 ------

在robot框架测试用例中,我设置了一个变量,然后执行一个过程

因为变量的设置不是一个非常有趣的信息,所以我不想在我的报告中包含它

| Verifying STUFF  |
| | ${endpoint}=    | set variable | STUFF
| | Verify
我的报告包括:

KEYWORD: ${endpoint} = BuiltIn.Set Variable STUFF
但我宁愿不把它放在那里。我怎样才能告诉Robot Framework不要记录这一行呢

------编辑------

看起来应该这样做:

pybot --removekeywords NAME:SetVariable testcase.txt
但是Set变量关键字仍然存在


(是的,我将robot框架升级到2.8.3以利用此功能。)

您最好使用

Set Log Level    NONE
但它仍然会记录所有的关键字调用,只是其中没有任何内容

或者,如果调用调用另一个函数的python函数,则不会记录对第二个函数的调用

像这样:

*** Settings ***
Library           lib.py

*** Test Cases ***
demo
    Set Log Level    NONE
    ${a}    foo
    xyzzy

*** Keywords ***
xyzzy
    qwerty

qwerty
    No Operation
    Log    123
lib.py是这样的:

def foo():
    abc = bar()
    return abc

def bar():
    c = 1
    print c
    return c
您可以在pybot上使用--removekeywords或--flatteKeywords选项来删除关键字的内容,因此,如果您有包含大量日志关键字的关键字“foo”,您可以将--flatteKeywords name:foo”选项设置为pybot,并且在日志中,您将只看到主关键字,但其中没有关键字


问题在于,当您分配一个变量(如
${var}=Keyword
)时,Robot框架输出中的关键字名称是
${var}=Keyword
,而不是您所期望的
Keyword
。如果关键字来自库或资源文件,其名称也将包括在内,如
${var}=MyLibrary.keyword
。后者是一种功能,但前者是一种功能,有望在RF 2.9中得到修复

目前,包括变量名在内的关键字名的一个简单解决方法是使用通配符。这样的事情应该适合你:

--RemoveKeywords 'name:* = BuiltIn.Set Variable'

如果您使用python库,以下monkey补丁对我很有用:

from robot.libraries.BuiltIn import BuiltIn
from robot.output.logger import LOGGER
import types

def _nothing(*args, **kwargs):
    pass

def disable_keyword_logging(self):
    self._logging_methods = (LOGGER.start_keyword, LOGGER.end_keyword)
    LOGGER.start_keyword = types.MethodType(_nothing,LOGGER)
    LOGGER.end_keyword = types.MethodType(_nothing,LOGGER)

def enable_keyword_logging(self):
    LOGGER.start_keyword, LOGGER.end_keyword = self._logging_methods
然后在运行此脚本时:

Disable keyword logging
Log    Hello world
Enable keyword logging
“Log”关键字未记录到输出中,但输出为。
如果您真的不需要任何东西(也不需要被调用的关键字记录调试/信息/警告信息),您仍然需要将日志级别设置为“无”。

Robot Framework不会将“全局”变量记录为变量表的一部分。Global在引号中,因为Set Global变量实际上已被记录,但如果您像这样初始化变量

*** Variables ***
${endpoint}     stuff

*** Keywords ***
…那么它将不在日志中。此外,如果您不希望任何人看到变量(如果他们只是查看测试套件的前端),您可以将其隐藏在资源文件中,然后调用资源文件


Robot Framework会记录设置变量关键字和结果,因为设置变量意味着您正在动态设置变量,并且可能基于关键字的结果进行设置,在这种情况下,您可能希望知道关键字的结果是什么。如果您只是创建一个静态变量,那么就不需要表之外的额外工作。动态变量是代码中必需的部分吗?

谢谢,但这并不能真正起作用。我想通过删除任何不“做”任何事情的关键字来简化日志。(将变量设置为常量实际上并不算是对我做了什么。)我希望我的日志文件便于任何人获取和理解,而设置变量只是一个小问题。我可能不得不修改一些其他的关键字来避免它。把你的变量放在一个看起来应该可以工作的文件中,但到目前为止,它一直让我失望。稍后会有更多详细信息。您使用--removekeywords成功了吗?你能给我举个例子吗?@SkipHuffman我更新了我的答案,这两个选项实际上都不是你想要的。这不是我想要的。在报表和日志中设置变量的整个操作都不有趣,因此我想将其省略。您好。我们的测试包含敏感数据,例如,一个带有密码的变量,它不应该出现在log和output.xml中。存在以下几个问题:1。我们不能按变量名过滤,只能按关键字名模式过滤,这不适合我们。因此,无法使用*some\u password*模式删除set套件变量${some\u password}。2.即使在log.html中删除了关键字数据,output.xml仍然包含所有机密数据。您所说的“设置变量关键字仍然存在”到底是什么意思?你是说它们仍然被记录,还是说它们仍然存在于你的测试中?另外,您是否使用基于Java或Python的Robot Framework版本?为什么这些函数将
self
作为参数?它们不是类定义的一部分。如前所述,此代码不起作用。