Отображать результаты теста с помощью xUnit (Custom) и XSLT - PullRequest
0 голосов
/ 09 октября 2018

Я использую плагин xUnit Jenkins для печати результатов теста, предоставив косая черта в формате XML (xunit.xml):

<testsuite errors="0" failures="1" hostname="macbook-pro.local" name="slash-suite" skipped="0" tests="2" time="0" timestamp="2018-10-03T13:25:05">
    <testcase classname="bla" name="test.py:test_a" time="0">
        <failure message="AssertionError: assert False" type="failure" />
    </testcase>
    <testcase classname="" name="test.py:test_b" time="0" />
</testsuite>

Для обработки этого XML яиспользуя пользовательский инструмент для неподдерживаемых форматов.

Для этого требуется предоставить XSL-файл, преобразующий его в html (xunit.xsl):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:template match="/">
      <html>
         <body>
            <h2>Tests Results</h2>
            <table border="1">
               <tr bgcolor="#9acd32">
                  <th>TestClass</th>
                  <th>TestName</th>
                  <th>TestResult</th>
                  <th>Message</th>
               </tr>
               <xsl:for-each select="testsuite/testcase">
                  <tr>
                     <xsl:choose>
                        <xsl:when test="@classname">
                           <td>
                              <xsl:value-of select="@classname" />
                           </td>
                        </xsl:when>
                        <xsl:otherwise>
                           <td>No Class</td>
                        </xsl:otherwise>
                     </xsl:choose>
                     <td>
                        <xsl:value-of select="@name" />
                     </td>
                     <xsl:choose>
                        <xsl:when test="failure">
                           <td>FAIL</td>
                        </xsl:when>
                        <xsl:otherwise>
                           <td>SUCCESS</td>
                        </xsl:otherwise>
                     </xsl:choose>
                     <xsl:choose>
                        <xsl:when test="failure">
                           <td><xsl:value-of select="failure/@message" /></td>
                        </xsl:when>
                        <xsl:otherwise>
                           <td>SUCCESS</td>
                        </xsl:otherwise>
                     </xsl:choose>
                  </tr>
               </xsl:for-each>
            </table>
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Моя команда xUnit выглядит следующим образом:

xunit (testTimeMargin: '3000',
       thresholdMode: 1,
       thresholds: [],
       tools: [Custom(customXSL: 'xunit.xsl', deleteOutputFiles: true, failIfNotNew: true, pattern: 'outputs/xunit.xml', skipNoTestFiles: false, stopProcessingIfError: true)]
       )

Я получил следующую ошибку:

ERROR: cvc-elt.1: Cannot find the declaration of element 'html'.
ERROR: The plugin hasn't been performed correctly: The converted file for the result file '/home/centos/jenkins/workspace/scheduler/outputs/xunit.xml' (during conversion process for the metric 'Custom Tool') is not valid. The report file has been skipped.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...