Шрифт
QTP 10 - как пройти тест н-е количество раз?
Play

QTP 10 - как пройти тест н-е количество раз?

Window("Program Manager").WinListView("SysListView32").Activate "AlReader2.exe" Window("AlReader2").WinMenu("Menu").Select "File;Open" Window("AlReader2").Dialog("Open File").Close Window("AlReader2").Close

Открыл прогу, нажал на кнопку файл - опен - открылось окно- закрыл его - закрыл прогу. С помощью GO . LOOP QTP будет проходить этот скрипт, пока не остановлю. А можно узнать, сколько раз QTP пробежала скрипт? Спасибо.

PS Название темы не совсем верное, так как с одним вопросом разобрался сам.

#2 tab15 #3 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

Самое простое - обернуть все в самостоятельный цикл.

Бесконечные циклы не есть хорошо. Если хотите, чтобы выполнялся долго, пока не прервете, лучше написать цикл с выходом по таймауту, вдруг QTP не отреагирует на break?

Если минарет, значит выше всех (с)

#4 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

Можно просто добавить переменную, которая при каждом прохождении цикла будет увеличиваться на 1, а в конце ее в репорт записать.(c синтаксисом могу напутать давно в qtp не работал)

Если минарет, значит выше всех (с)

#5 Zenturio
  • ФИО: Дмитрий
  • Город: Смоленск - Москва

Window("Program Manager").WinListView("SysListView32").Activate "AlReader2.exe"Window("AlReader2").WinMenu("Menu").Select "File;Open"Window("AlReader2").Dialog("Open File").CloseWindow("AlReader2").Close

Открыл прогу, нажал на кнопку файл - опен - открылось окно- закрыл его - закрыл прогу.С помощью GO . LOOP QTP будет проходить этот скрипт, пока не остановлю. А можно узнать, сколько раз QTP пробежала скрипт?Спасибо.

PS Название темы не совсем верное, так как с одним вопросом разобрался сам.

#6 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

Зачем делать цикл, сделайте Action и запускайте ее сколько угодно раз.

Если минарет, значит выше всех (с)

#7 tab15

Так не получится, потому что бесконечный цикл написан, а выход из него будет осуществляться через остановку скрипта, поэтому до отправки сообщения в лог дело никогда не дойдет

#8 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

Это понятно:) У топикстартера, насколько я понимаю, уже есть условия остановки скрипта. Ему нужно просто узнать сколько раз этот самый скрипт пробежит.

Если минарет, значит выше всех (с)

#9 iFomin
  • ФИО: 4min Il
  • Город: мск

Тут очень много простых способов: 1) Устанавливать на каждой итерации переменную окружения Windows 2) Писать счетчик в лог или в (первую строку) DataTable на каждой операции 3) Определить другое условие выхода из цикла (например, состояние переменной окружения) 4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Если хочется к пунтам 1/2 добавить дополнительной автоматизации, можно запускать QTP-сессию через COM, тогда сможете перехватить момент остановки теста по любому условию и выполнить дальше произвольный код.

#10 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Если минарет, значит выше всех (с)

#11 iFomin
  • ФИО: 4min Il
  • Город: мск

4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Хм, а вот интересно, как вы стектрейсы собираете? Переопределяете RunAction, в методы вставляете маркеры? Или я о каких-то других стектрейсах думаю..

#12 ch_ip
  • ФИО: Павел Абдюшев
  • Город: Москва

4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Хм, а вот интересно, как вы стектрейсы собираете? Переопределяете RunAction, в методы вставляете маркеры? Или я о каких-то других стектрейсах думаю..

У нас полный стектрейс именно кода без привязки к сценариям, потому что1) мы слабо использовали сценарии. Предпочитали все выносить в библиотеки и работать непосредственно с кодом2) Тяжело отследить сценарии и сделать иерархию в собственном логе такую же, как в родном qtp-шном логе. Хотя, мне сейчас в голову пришла мысль, что трейс сценариев можно точно так же через terminate объектов отслеживать, просто мы этой целью раньше не задавались, поэтому и не попробовали

Реализован через вставку "маркеров" во все функции - в начале кода каждой функции идет вызов функции, которая добавляет всю информацию о вызванной функции в трейс-хеш (имя функции, имена параметров и их значения; уровень, на котором была вызвана функция, считается автоматически). Когда случается любая ошибка или фейл проверки в лог автоматом выводится содержимое трейс-хешаДля некоторых мелких функций, которые часто вызываются в цикле много тысяч раз сделано исключение, и их вызовы в трейс не попадают

RunAction, кажется, нельзя переопределить. Если знаете, как это сделать, очень прошу поделиться этим ноу-хау.

📎📎📎📎📎📎📎📎📎📎