2016-09-16 114 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