在TestComplete中如何在OnLogCheckPoint事件期间获取对象检查点的对象?

时间:2015-05-06 20:17:58

标签: testcomplete

我目前正在测试完成的测试运行期间自动检测测试信息。

所以我的要求就是这个。

  1. 我在testcomplete中创建了一个测试
  2. 我附加了具有自己代码的OnLogCheckpoint事件。
  3. 我可以获得对象检查点的检查点属性(它们在LogParams中可用)
  4. 然而,我找不到一种方法来获取对象检查点被调用的对象。
  5. 有没有办法从OnLogCheckpoint事件或其他方式获取从脚本执行对象检查点的对象/别名。

1 个答案:

答案 0 :(得分:2)

当检查点消息发布到日志并且现在执行检查点时,会触发 OnLogCheckpoint 事件。有一个重要区别:在第一种情况下,事件的目标是日志消息,而不是对象树中的实际对象。

但是,在一般情况下,此类消息包含您需要的对象名称。因此,您可以解析日志消息以获取对象的名称。下面是一个示例脚本(JScript),它为Property checkpoint消息执行此操作。我没有使用其他检查点类型对其进行测试,但是这些代码可能无需任何更改或进行最少的更改即可使用它们。

function GeneralEvents_OnLogCheckpoint(Sender, LogParams)
{
  Log.Message("Object name: " + getObjectNameFromCheckpointMessage(LogParams.StrEx));
}

function getObjectNameFromCheckpointMessage(str)
{
  var re = /<th class='BoldLineTop HB'>Object name:<\/th>\s+<th class='BoldLineTop'>((\w|\(|\)|\.|\s|,|-|")+)<\/th>/;
  var m = re.exec(str);
  if (m === null)
    return "";

  return m[1];
}

更新

以下示例脚本显示如何获取使用Object检查点验证的对象的名称。获得的名称是一个简短的名称,似乎没有办法获得全名。

function GeneralEvents_OnLogCheckpoint(Sender, LogParams)
{
  Log.Message("Object name: " + getObjectNameFromObjectCheckpointMessage(LogParams.StrEx));
}

function getObjectNameFromObjectCheckpointMessage(str)
{
  var re = /Click here to show or modify data of the checkpoint \"(\w+)\"\./;
  var m = re.exec(str);
  if (m === null)
    return "";

  return Objects.StoredObject(m[1]).Name;
}