如何在使用Robot Framework时打印可用标签

bin*_*thb 3 python automation robotframework

如果我在Robot Framework中有一个大型测试套件,并且有很多标签可以了解套件中可用的标签名称列表?

有点像pybot --listtags ??

对于实际要进行测试的人来说,它会很有用.

例如,在与发布新闻文章相关的场景中,测试用例可以被标记为"发布","发布"或"发布".

测试人员不会随意使用RIDE.因此他/她可能不知道确切的标签名称.

在这些情况下,我认为提取要显示的可用标记是有用的 - 无需运行任何测试.然后他/她可以选择使用所需的标签运行测试

我搜索了机器人框架用户指南,但没有看到任何执行此操作的命令行选项.

Bry*_*ley 10

机器人没有提供任何信息来提供这些信息.但是,编写一个使用机器人解析器获取所有标记信息的python脚本非常容易.这是一个我觉得正确的快速破解(尽管我只是非常简单地测试过):

from robot.parsing import TestData
import sys

def main(path):
    suite = TestData(parent=None, source=path)
    tags = get_tags(suite)
    print ", ".join(sorted(set(tags)))

def get_tags(suite):
    tags = []

    if suite.setting_table.force_tags:
        tags.extend(suite.setting_table.force_tags.value)

    if suite.setting_table.default_tags:
        tags.extend(suite.setting_table.default_tags.value)

    for testcase in suite.testcase_table.tests:
        if testcase.tags:
            tags.extend(testcase.tags.value)

    for child_suite in suite.children:
        tags.extend(get_tags(child_suite))

    return tags

if __name__ == "__main__":
    main(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)

请注意,这不会获得Set Tags关键字创建的任何标记,也不会考虑删除标记删除的标记.

将代码保存到文件,例如get_tags.py,然后像这样运行:

$ python /tmp/get_tags.py /tmp/tests/
a tag, another force tag, another tag, default tag, force tag, tag-1, tag-2
Run Code Online (Sandbox Code Playgroud)