【问题标题】:Can I determine if current test execs from test lab or interactively from within QTP IDE?我可以确定当前测试执行人员是来自测试实验室还是在 QTP IDE 中以交互方式执行?
【发布时间】:2020-08-14 23:02:29
【问题描述】:

检查当前 QTP 测试执行是否是交互式的(即不是从 QC 测试实验室启动的 QC 测试集执行的一部分)的最有效方法是什么?

你们知道一个很酷的方法吗? WR 曾经有一个批处理运行标志,该标志可靠地为 IDE 内的所有执行清除。也许QTP有这样的东西,而我忽略了它?

首先,我想看看OnError 属性:

Set qtApp = getObject("","QuickTest.Application")

qtApp.Test.Settings.Run.OnError 现在返回以下可能值之一: “Dialog”、“NextIteration”、“Stop”或“NextStep”。

这将允许我查看OnError 设置,当执行是测试集的一部分时,它可能是“对话”和“停止”,但是:

  • 我设法在所有 QTP 测试中避免使用自动化接口,这将是我的第一个例外(早期的 QTP 版本混淆并启动了第二个 QTP 实例,产生了很多问题......)
  • 测试人员可能会在 QTP IDE 中执行“交互式”运行,并将此设置设置为“NextStep”或“NextIteration”,然后我会在我的代码中误解。
  • 它不起作用,即使没有出现对话(由于从 QC 测试集执行),返回的值是“对话”。哦!

【问题讨论】:

    标签: automated-tests qtp hp-quality-center


    【解决方案1】:

    不需要去自动化对象,它暴露在Setting对象中。

    If Setting("IsInTestDirectorTest") Then
        Print "Run from QC"
    Else
        Print "Not run from QC"
    End If     
    

    请注意,TestDirector (TD) 是 QualityCenter (QC) 的历史名称。

    【讨论】:

    • 多哈。这完美无缺。这是在哪里记录的?如果没有记录,你是怎么知道的?
    • 即使 google 对字符串 IsInTestDirectorTest 也有 0 次准确命中。什么鬼?
    • @TheBlastOne,我可以告诉你,但我必须招募你......我不确定这是否是一个受支持的功能[无论如何,谷歌应该至少有一个点击 @ 987654323@ :o)].
    • 明白了,谢谢。毁灭公爵会说:“嘿嘿嘿,真是一团糟。”
    • 附录:如果执行不是来自 TD/QC/ALM 测试集中,设置 ("IsInTestDirectorTest") 将返回 Empty,而不是 false。 (因为empty true,这在显示的代码中并不重要。)显然,该设置仅存在于...
    【解决方案2】:

    这可能是一个选择使用

    Public Function IsTestSetRun ()
        Dim Result: Result=false
        If not QCUtil is Nothing then
            If not QCUtil.CurrentTestSetTest is Nothing then
                Result=true
            End If
        End If
        IsTestSetRun=Result
    End Function
    

    基于QCUtil.CurrentTestSetTest。不幸的是,如果您以交互方式运行 GUI 测试,它会返回 true,因此它并不是一个完整的解决方案。

    但由于其他选项不适用于 BPT 组件,我现在正在使用此选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多