暗示所有标签都是唯一的(我怀疑..):
您可以创建一个接受标签的函数,在定义自定义字段的 QC 表中搜索正确的字段定义,然后返回字段名称。然后使用函数的结果值作为索引属性的索引。
假设该函数将被称为“GetNameOfLabel”,那么调用者的代码将如下所示:
Set currentRun = QCUtil.CurrentRun
currentRun.Field(GetNameOfLabel ("Data Rows Passed")) = 1
currentRun.Post
当然,这个函数并不是真的很简单,但是在对 QC 数据模型进行一些挖掘并找到一种通过 SQL 从数据库中获取名称的有效方法之后就足够简单了。
或者,该函数可以在数组或字典中查找名称,然后您必须维护该字典,但您不必每次查找都去数据库。
缺点:
- 标签错误的脚本可能更难调试
- 如果标签不是唯一的,那么调试可能真的很“有趣”
如果在 DB 上查找:
- 如果您不缓存或预加载这些查找的 SQL 查询结果,所有脚本都会变慢;
- 复杂性,因为您必须执行正确的 SQL 查询,并且您以一种非常特殊的方式依赖 QC 的数据模型(升级时通常会感到恐惧)
如果在数组或字典中查找:
- 您要么必须保持其初始化(打赌其他管理员添加 cust 字段会很容易忘记),要么必须从 QC 的表中“加载”它(这有点像上面的 SQL 解决方案,并且具有相同的缺点)。
我会选择 array/dictionary-initialized-from-db-idea。或者,如果你能接受已经提出的不变的想法,那是一个不错的选择。考虑到 QC 自定义脚本中没有独立于会话的范围,SQL 访问想法可能真的会降低性能,因为它必须为每个新用户会话执行。这就是为什么我也对这个不变的想法+1。