junit/xunit妨碍结果xml文件

junitparser的Python项目详细描述


Codacy Badgehttps://travis-ci.org/gastlygem/junitparser.svg?branch=masterhttps://coveralls.io/repos/github/gastlygem/junitparser/badge.svg?branch=master

它是做什么的?

junit parser是一个junit/xunit结果xml解析器。使用它来分析和操作 现有的结果XML文件,或者从头开始创建新的JUnit/XUnit结果XMLS。

已经有很多模块可以从 特定格式,但您可能会遇到一些专有的或不太为人所知的格式 你想转换它们并将结果提供给另一个工具,或者,你可以 想用你自己的方式操纵结果。这就是junitparser来的地方 变成便利。

为什么是junitparser?

  • 功能性。有各种junit/xunit xml库,有些库有 解析,有些是XML生成,有些是操作。这个模块可以 都是一个包裹。
  • 可扩展性。junit/xunit几乎不是一种标准格式。基本格式 有点普遍同意,但除此之外,可能还有“习俗” 元素和属性。junitparser的目标是通过 允许用户对一些基类进行monkeypatch和子类化。
  • Python。您可以用pythonic方式操作测试用例和套件。

安装

pip install junitparser

用法

您应该相对熟悉junit xml格式。如果没有,就跑 pydoc,查看公开的类和函数的结构。

从头开始创建junit xml格式的报告

您有一些测试结果数据,希望将它们转换为junit.xml 格式。

fromjunitparserimportTestCase,TestSuite,JUnitXml,Skipped,Error# Create casescase1=TestCase('case1')case1.result=Skipped()case2=TestCase('case2')case2.result=Error('Example error message','the_error_type')# Create suite and add casessuite=TestSuite('suite1')suite.add_property('build','55')suite.add_testcase(case1)suite.add_testcase(case2)suite.delete_testcase(case2)# Add suite to JunitXmlxml=JUnitXml()xml.add_testsuite(suite)xml.write('junit.xml')
< H3>读取和操作退出JUnit/XUnit XML文件

您有一些现有的JunIT.xml文件,并且希望修改内容。

fromjunitparserimportJUnitXmlxml=JUnitXml.fromfile('/path/to/junit.xml')forsuiteinxml:# handle suitesforcaseinsuite:# handle casesxml.write()# Writes back to file

合并XML文件

您有两个或多个XML文件,希望将它们合并为一个。

fromjunitparserimportJUnitXmlxml1=JUnitXml.fromfile('/path/to/junit1.xml')xml2=JUnitXml.fromfile('/path/to/junit2.xml')newxml=xml1+xml2# Alternatively, merge in placexml1+=xml2

注意,它不会检查重复的条目。你需要处理他们 你自己的。

使用自定义属性创建xml

要使用默认不支持的属性。

fromjunitparserimportTestCase,Attr,IntAttr,FloatAttr# Add the custom attributeTestCase.id=IntAttr('id')TestCase.rate=FloatAttr('rate')TestCase.custom=Attr('custom')case=TestCase()case.id=123case.rate=0.95case.custom='foobar'

使用自定义元素处理xml

也许1000年后你会想这样做一次,但无论如何。 假设您想将元素customelement添加到testcase。

fromjunitparserimportElement,Attr,TestSuite# Create the new element by subclassing Element,# and add custom attributes to it.classCustomElement(Element):_tag='custom'foo=Attr()bar=Attr()testcase=TestCase()custom=CustomElement()testcase.append(custom)# To find a single sub-element:testcase.child(CustomElement)# To iterate over custom elements:forcustomintestcase.iterchildren(CustomElement):...# Do things with custom element

处理自定义xml属性

假设您有一些数据作为自定义属性存储在xml中,并且您希望 读出来:

fromjunitparserimportElement,Attr,TestSuite# Create the new element by subclassing Element or one of its child class,# and add custom attributes to it.classMyTestCase(TestCase):foo=Attr()xml=JUnitXml.fromfile('/path/to/junit.xml')forsuiteinxml:# handle suitesforcaseinsuite:my_case=MyTestCase.fromelem(case)print(my_case.foo)

命令行

$ junitparser --help
usage: junitparser [-h][-v]{merge} ...

Junitparser CLI helper.

positional arguments:
{merge}command
  merge        Merge Junit XML format reports with junitparser.

optional arguments:
-h, --help     show this help message and exit
-v, --version  show program's version number and exit
$ junitparser merge --help
usage: junitparser merge [-h] paths [paths ...] output

positional arguments:
paths       Original XML path(s).
output      Merged XML Path.

optional arguments:
-h, --help  show this help message and exit

测试

您可以直接运行案例:

python test.py

或者使用pytest:

pytest test.py

注释

还有一些其他包提供类似的功能。他们是 在那里呆了很长时间,但可能不像 青年人:

  • xunitparser:读取junit/xunit xml文件并将它们映射到python对象
  • xunitgen:生成xunit.xml文件
  • xunitmerge:用于将多个xunit xml报告合并到单个xunit xml报告中的实用工具 XML报表。
  • junit-xml:创建可由 詹金斯等工具

贡献

求你了!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中将字符串转换为音频输入   java如何使用Spring Boot RestTemplate解组json列表   计算机上C++ OpenCV项目转换为OpenCV Android的java步骤   Java Spring Telegraf数据表不工作   openurlconnection与connect之间的java差异?   java Solr字段搜索、通配符和转义字符   java如何使用DLFolderLocalServiceUtil类的getFolders()方法?   尝试用Java编写文件   java连续双缓冲解决方案不起作用   两个数组的Java乘积   java Jackson,如何正确编写自定义反序列化程序   java将布尔标志按一定顺序排列以获得更好的性能是否有意义   java Vaadin无缓冲网格无法关闭   java在MySQL中以同一用户身份同时从不同客户端登录安全吗?   java如何使用安卓asynchttp库   java无法在Android中使用AlarmManager停止服务   java在Hibernate的XML配置文件中指定默认值   Spring启动应用程序中的java内存SQLITE不工作   Java代码无法写入文本文件,