Могу ли я определить, выполняются ли текущие тесты из тестовой лаборатории или в интерактивном режиме из QTP IDE?

Каков наиболее эффективный способ проверить, является ли текущее выполнение теста QTP интерактивным, т. е. не является ли оно частью выполнения набора тестов контроля качества, запущенного из тестовой лаборатории контроля качества?

Ребята, вы знаете крутой способ? Раньше у 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, что я тогда неправильно интерпретирую в своем коде.
  • Это не работает, даже если диалоги не появляются (из-за выполнения из набора тестов контроля качества), возвращается значение Dialog. ДОХ!

person TheBlastOne    schedule 11.11.2010    source источник


Ответы (2)


Нет необходимости переходить к объекту автоматизации, он выставлен в объекте Setting.

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

Обратите внимание, что TestDirector (TD) — это историческое название QualityCenter (QC).

person Motti    schedule 14.11.2010
comment
Дох. Это работает отлично. Где это задокументировано? Если это не задокументировано, как вы об этом узнаете? - person TheBlastOne; 15.11.2010
comment
Даже у google есть 0 точных совпадений для строки IsInTestDirectorTest. ВТФ? - person TheBlastOne; 15.11.2010
comment
@TheBlastOne, я мог бы сказать вам, но тогда мне пришлось бы нанять вас ... Я не уверен, поддерживается ли эта функция [в любом случае, скоро у Google должен быть хотя бы один хит для IsInTestDirectorTest :o)]. - person Motti; 15.11.2010
comment
Понял, спасибо. Дюк Нюкем сказал бы: «Хе-хе-хе, какой беспорядок». - person TheBlastOne; 15.11.2010
comment
Приложение: параметр Setting (IsInTestDirectorTest) возвращает значение Empty, если выполнение выполняется не из набора тестов TD/QC/ALM, а НЕ false. (Поскольку пусто ‹› true, это не имеет значения в показанном коде.) Очевидно, что настройка существует, только если... - person TheBlastOne; 26.06.2013
comment
Обновить Этот параметр по-прежнему работает с UFT. Однако, как только экземпляр UFT выполнил один тест из ALM, этот параметр всегда возвращает 0 (не пустой). Таким образом, это работает только в том случае, если вы снимите флажок Оставлять UFT открытым после завершения сеанса выполнения тестовой лаборатории в настройках удаленного агента UFT. Не уверен, что это следует добавить к ответу. @ Мотти, я бы проголосовал за это. - person TheBlastOne; 13.01.2016

Это может быть вариант использования

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. К сожалению, он возвращает true, если вы запускаете тест графического интерфейса в интерактивном режиме, поэтому на самом деле это не полное решение.

Но поскольку другой вариант не работает с компонентами BPT, я сейчас использую этот вариант.

person TheBlastOne    schedule 13.01.2016