2016-09-16 115 views
0

我對測試用例有以下XML。使用XSLT從XML測試用例獲取節點數

<?xml version="1.0" encoding="UTF-8"?> 
<TestResultArray xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <TestResult> 
     <Name>Test1</Name> 
     <Date>9/15/2016</Date> 
     <Time>4:09 PM</Time> 
     <Id>697</Id> 
     <Steps> 
     <TestStep> 
      <Number>2</Number> 
      <Status>PASS</Status> 
     </TestStep> 
     <TestStep> 
      <Number>3</Number> 
      <Status>PASS</Status> 
     </TestStep> 
     <TestStep> 
      <Number>4</Number> 
      <Status>PASS</Status> 
     </TestStep> 
     </Steps> 
    </TestResult> 
    <TestResult> 
     <Name>Test2</Name> 
     <Date>9/15/2016</Date> 
     <Time>4:09 PM</Time> 
     <Id>697</Id> 
     <Steps> 
     <TestStep> 
      <Number>2</Number> 
      <Status>FAIL</Status> 
     </TestStep> 
     <TestStep> 
      <Number>3</Number> 
      <Status>PASS</Status> 
     </TestStep> 
     <TestStep> 
      <Number>4</Number> 
      <Status>PASS</Status> 
     </TestStep> 
     </Steps> 
    </TestResult> 
    <TestResult> 
     <Name>Test3</Name> 
     <Date>9/15/2016</Date> 
     <Time>4:09 PM</Time> 
     <Id>697</Id> 
     <Steps> 
     <TestStep> 
      <Number>2</Number> 
      <Status>FAIL</Status> 
     </TestStep> 
     <TestStep> 
      <Number>3</Number> 
      <Status>FAIL</Status> 
     </TestStep> 
     <TestStep> 
      <Number>4</Number> 
      <Status>FAIL</Status> 
     </TestStep> 
     </Steps> 
    </TestResult> 
</TestResultArray> 

我想獲取測試用例的總數,傳遞的數量和失敗的測試用例的數量。

要求是如果<TestStep>中的任何一個是FAIL,則整個測試用例<TestResult>應該被計爲FAIL。

我能夠得到測試用例的總數與

<tr> 
<td> <xsl:value-of select="count(TestResultArray/TestResult)" /> </td> 
</tr> 

我怎樣才能使用XSLT通過和失敗的測試案例<TestResult>(不<TestStep>)的總數是多少?

對於上述XML示例輸出應該是

Total Testcase = 3, 
Passed = 1, 
Failed = 2 

回答

1

這裏是一個可能的解決方案:

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

    <xsl:template match="/*"> 
    <xsl:text>Total Testcase = </xsl:text> 
    <xsl:value-of select="count(*)"/> 
    <xsl:text>,&#xa;</xsl:text> 
    <xsl:text>Passed = </xsl:text> 
    <xsl:value-of select="count(*[not(Steps/*/Status = 'FAIL')])"/> 
    <xsl:text>,&#xa;</xsl:text> 
    <xsl:text>Failed = </xsl:text> 
    <xsl:value-of select="count(*[Steps/*/Status = 'FAIL'])"/> 
    <xsl:text>&#xa;</xsl:text> 
    </xsl:template> 

</xsl:stylesheet> 

當源XML運行,下面的結果產生:

Total Testcase = 3, 
Passed = 1, 
Failed = 2 
+0

這正是我想要的。謝謝:) – John

+0

你打賭!樂意效勞。 – ABach