QTP,按标签访问QC字段

Jon*_*röm 5 testing qtp qc hp-quality-center

我想使用Label of字段而不是名称来更新QC中的自定义用户字段

目前我们这样做

Set currentRun = QCUtil.CurrentRun
currentRun.Field("RN_USER_03") = 1
currentRun.Post
Run Code Online (Sandbox Code Playgroud)

但我想这样做

Set currentRun = QCUtil.CurrentRun
currentRun.Field("Data Rows Passed") = 4
currentRun.Post
Run Code Online (Sandbox Code Playgroud)

但我找不到这样做的方法.有任何想法吗?

The*_*One 1

暗示所有标签都是唯一的(我对此表示怀疑..):

您可以创建一个函数,该函数接受标签,在定义自定义字段的 QC 表中搜索正确的字段定义,然后返回字段名称。然后使用函数的结果值作为索引属性的索引。

假设该函数被称为“GetNameOfLabel”,那么调用者的代码将如下所示:

Set currentRun = QCUtil.CurrentRun 
currentRun.Field(GetNameOfLabel ("Data Rows Passed")) = 1 
currentRun.Post 
Run Code Online (Sandbox Code Playgroud)

当然,该函数实际上并不是微不足道的,但在深入研究 QC 数据模型并找到一种通过 SQL 从数据库中获取名称的有效方法后就足够简单了。

或者,该函数可以在数组或字典中查找名称,然后您必须维护该字典,但不必每次查找都访问数据库。

缺点:

  • 带有错误标签的脚本可能更难调试
  • 如果标签不是唯一的,那么调试可能会很“有趣”

如果查找数据库:

  • 如果您不缓存或预加载这些查找的 SQL 查询结果,所有脚本都会变慢;
  • 复杂性,因为您必须执行正确的 SQL 查询,并且您以一种非常特殊的方式依赖 QC 的数据模型(当您升级时通常会很恐怖)

如果在数组或字典中查找:

  • 您要么必须维护其初始化(打赌其他添加 cust 字段的管理员会很容易忘记这一点),要么必须从 QC 表“加载”它(这有点像上面的 SQL 解决方案,并且具有相同的缺点)。

我会选择 array/dictionary-initialized-from-db-idea。或者,如果您能够接受已经提出的恒定想法,那么这是一个不错的选择。考虑到 QC 自定义脚本中不存在独立于会话的范围,SQL 访问思想可能会真正降低性能,因为它必须为每个新用户会话执行。这就是为什么我也对这个不变的想法+1。