How to deal with Robot Framework result from XML output

最近在做个邮件通知,邮件正文中需要总结一下RF的结果,本来想直接把rebot命令生成的html页面复制上去,后来发现它是基于js生成的。

既然邮件不识别,只能自己来生成html结果了。

1. Parse output.xml

rebot命令生成报告是基于RF生成的output.xml, 我们也需要从这里下手。
robot.api提供了解析xml的API
从链接中的例子可以看到主要用到了ExecutionResult和ResultVisitor
ExecutionResult负责解析xml,然后通过ResultVisitor来对结果做一些自定义的修改。

2. ExecutionResult API

我们只是要得到statistics的结果,所以只需用ExecutionResult的返回值Result即可。
Result.statistics主要有以下几个elements:

total:
Instance of TotalStatistics.

suite:
Instance of SuiteStatistics.

tags:
Instance of TagStatistics.

我们需要逐一的去看看对应instance以及其父类的成员变量,比如我们看文档可以知道TotalStatistics.message可以得到如下结果:

我们就可以通过ExecutionResult(xml_path).statistics.total.message来获取它的值。

关于suite和tags,它们最后是base robot.model.stats.Stat, 其中提供了test case的name,total,passed,elapsed等信息。

3. Handle result code snippet

from pprint import pprint
from robot.api import ExecutionResult


def handle_robot_results(xml_path):
    print '='×80
    print 'RF Total Result:'
    test_stats = ExecutionResult(xml_path).statistics
    pprint(test_stats.total.message)
    print '='×80
    for stats_by_suite in test_stats.suite:
        print('{:70} {:^5} {:^5}'.format(stats_by_suite.name,stats_by_suite.total,stats_by_suite.passed))
    print '='×80
    for stats_by_tag in test_stats.tags:
        print('{:50} {:^5} {:^5}'.format(stats_by_tag.name,stats_by_tag.total,stats_by_tag.passed))
    print '='×80

有了以上结果,我们就能轻松生成html格式的邮件了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇