0

我想以编程方式解析 TestComplele 7 日志。具体来说,我想获取每个测试的名称和状态(成功\失败\警告)。

根据手册,我使用以下命令获取测试运行日志:

Log["SaveResultsAs"] ("PathToMyFolder", 1);

这会创建一堆文件和文件夹,包括可以由我的脚本解析的 XML。以下是此类 XML 的示例:

<ProjectLog>
  <ProjectLogItem id="0" pid="-1" nety="False">
    <Status>805039D.gif</Status>
    <No>1</No>
    <Name><![CDATA[Script Test Log [cTaStoring\cTaStoring_Start]]]></Name>
    <StartTime>13.04.2012 12:26:15</StartTime>
    <EndTime>13.04.2012 12:27:47</EndTime>
    <RunTime>0:01:32</RunTime>
    <Details></Details>
    <Messages/>
   </ProjectLogItem>
   <ProjectLogItem id="1" pid="-1" nety="False">
    <Status>905039C.gif</Status>
    <No>2</No>
    <Name><![CDATA[AutomaticStoring]]></Name>
    <StartTime>13.04.2012 12:27:47</StartTime>
    <EndTime>13.04.2012 12:30:42</EndTime>
    <RunTime>0:02:55</RunTime>
    <Details></Details>
    <Messages/>
   </ProjectLogItem>
</ProjectLog>

正如你所看到的,我几乎可以得到我想要的一切,但最有价值的一条数据,一个测试的状态被写成一个显示相应图标的图片的文件名!例如,805039D.gif 包含一个复选标记,905039C.gif 包含一个感叹号。

在我的脚本中硬编码这些名称很容易,但问题是它们不断变化!

问题

  1. 为什么他们决定使用图像名称而不是一些枚举来输出状态?
  2. 为什么图标会更改名称?
  3. 如何获取测试的状态?
4

2 回答 2

1

导出日志的 HTML 格式不打算被解析。如果要解析导出的日志,需要使用 XML 格式:

Log["SaveResultsAs"] ("PathToMyResultsXMLFile", lsXML);

以下是生成的日志文件的示例片段:

<Node name="message 0">
  <Prp name="date" type="D" value="41012.4210564815"/>
  <Prp name="priority" type="I" value="300"/>
  <Prp name="owner id" type="I" value="-1"/>
  <Prp name="color" type="I" value="-252645136"/>
  <Prp name="id" type="I" value="0"/>
  <Prp name="bkcolor" type="I" value="-252645136"/>
  <Prp name="message" type="S" value="This is a usual message"/>
  <Prp name="picture" type="S" value=""/>
  <Prp name="link" type="S" value=""/>
  <Prp name="unit id" type="I" value="0"/>
  <Prp name="remarks" type="S" value=""/>
  <Prp name="type" type="I" value="0"/>
  <Prp name="line no" type="I" value="2"/>
  <Prp name="child index" type="I" value="-1"/>
</Node>

消息的顺序由“ id ”字段指定,消息的类型由“ type ”字段降级。

0 - Message
1 - Event
2 - Warning
3 - Error
于 2012-04-13T17:21:16.773 回答
1

我对同样的问题最恼火。所以我用 C# 写了这个来解决它:

我会得到图像引用的文件的长度,然后

            if (b.Length == 610) status = "Pass";
            if (b.Length == 1016) status = "Fail";
            if (b.Length == 353) status = "Inconclusive";

因此,如果它引用的文件长度为 610,则通过等...

于 2012-05-23T19:46:02.047 回答