将pytest html报告合并为一份报告

时间:2016-04-13 11:41:07

标签: junit pytest

我使用xunitmerge将所有pytest junit xml输出合并为一个junit xml。用于运行pytest和merge的命令在下面,

for i in `ls  test_*`
do
test_suit=$(echo $i |cut -d'.' -f1)
py.test $i --tb=long --html=Reports/${test_suit}.html --junitxml=Reports/${test_suit}.xml -vv
done

xunitmerge Reports/*.xml Reports/discovery.xml

最后,所有xml都合并到一个xml文件中 有没有工具可以将多个py.test html文件转换为一个单独的html报告文件?

注意:当我在没有指定test_的情况下运行py.test时,触发所有文件都会自动启动test_但由于我使用了order plugin,在多个文件中订购我不能用来运行py.test而不指定特定的测试用例文件。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式使用XSLT

例如,假设您有以下XML文件(catalog.xml):

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <item>
    <name>A great book</name>
    <price>10</price>
  </item>
</catalog>

您可以创建XSL模板(catalog.xsl):

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My Catalog</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Name</th>
      <th>Price</th>
    </tr>
    <xsl:for-each select="catalog/item">
    <tr>
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="price"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

然后,您唯一需要做的就是在XML文件中引用您的XSL模板 最后,您的XML文件应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
<catalog>
  <item>
    <name>A great book</name>
    <price>10</price>
  </item>
</catalog>

在浏览器中打开您的XML文件,然后使用XSL模板呈现它!