是否可以为 Robot Framework 中所有测试用例中使用的最失败的关键字创建报告?

Posted

技术标签:

【中文标题】是否可以为 Robot Framework 中所有测试用例中使用的最失败的关键字创建报告?【英文标题】:Is it possible to create a report of the most failing keywords used over all test cases in Robot Framework? 【发布时间】:2020-01-19 11:39:26 【问题描述】:

由于提高了 Robot Framework 中测试用例的自动化测试质量,我们希望对所使用的关键字的质量有一个清晰的认识。

那么,有人可以解释或帮助我获取包含所有失败关键字的报告或列表,并在可能的情况下创建“前 10 个最失败的关键字”。

目前我编写了一个 Python 脚本,可以计算所有测试用例和测试套件中的所有关键字。但是,当我想按状态(状态计数 = PASS 和状态 = FAIL)过滤它们时,总数不正确。

这可能与父关键字中子关键字的状态也被计算在内的事实有关......

for i in files_output:
    dom = ElementTree.parse(i)
    root = dom.getroot()
    print("Adding Keywords")
    for kw in root.iter('kw'):
        count+=1
        kw_element = kw.attrib["name"]
        keyword_list_total[kw_element] = 1

        if kw_element not in keyword_list_failed:
            for item in kw.iter('status'):
                if "FAIL" in item.attrib["status"]:
                    keyword_list_failed[kw_element] = 1

        elif kw_element in keyword_list_failed:
            for item in kw.iter('status'):
                keyword_list_total[kw_element] += 1
                if "FAIL" in item.attrib["status"]:
                    keyword_list_failed[kw_element] += 1

例如:最后一个关键字的 TOTAL: 30 但会给出 FAILED: 523。这显然没有意义。

已经谢谢你帮助我了!

【问题讨论】:

【参考方案1】:

在这部分代码中:

for kw in root.iter('kw'):
        count+=1
        kw_element = kw.attrib["name"]
        keyword_list_total[kw_element] = 1

您正在将每个 XML 节点上的迭代器元素的 keyword_list_total[kw_element] 设置为 1。因此,每次在 XML 中出现相同的关键字时,其总计数都会重置为 1,而您永远不会重置 keyword_list_failed 计数。

例子:

您在测试用例中运行关键字My Keyword 10 次,每次都失败。使用您的脚本,它将总共初始化 keyword_list_total['My Keyword'] = 1 10 次,但将 keyword_list_failed['My Keyword'] 一直添加到 10。您最终会得到 Total: 2, Failed: 10

我建议您在 keyword_list_total 初始化程序中添加一个检查:

for kw in root.iter('kw'):
    count+=1
    kw_element = kw.attrib["name"]
    if keyword_list_total[kw_element] == None:
        keyword_list_total[kw_element] = 1

【讨论】:

以上是关于是否可以为 Robot Framework 中所有测试用例中使用的最失败的关键字创建报告?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过 Xpath 在 Robot Framework 中同时等待两个 Web 元素?

robot framework怎么设置变量引用变量

是否可以在不安装 Python 的情况下在 Windows 上安装 Robot Framework?

如何在 Robot Framework 中编写循环

如何在 Robot Framework 中退出 for 循环

如何使用 Robot Framework 比较两个 csv 文件