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, кажется, нельзя переопределить. Если знаете, как это сделать, очень прошу поделиться этим ноу-хау.