QTP 10 - как пройти тест н-е количество раз?
#1
Отправлено 07 июля 2011 - 23:26
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
Отправлено 08 июля 2011 - 07:33
i = 0 do ... i = i + 1 loop Reporter.ReportEvent MicDone, "Столько раз", i(c синтаксисом могу напутать давно в qtp не работал)
#3
Отправлено 08 июля 2011 - 08:12
Dim i For i=0 to 9 Reporter.ReportEvent 4, "Iteration number = " & Cstr(i+1), "" '------------' 'Here code to run in cycle should be placed' '------------' Next
Бесконечные циклы не есть хорошо. Если хотите, чтобы выполнялся долго, пока не прервете, лучше написать цикл с выходом по таймауту, вдруг QTP не отреагирует на break?
Public Function TimerEx TimerEx = CDbl(Date) * 86400 + Timer() End Function Dim timeout, start_time timeout = 3600 'seconds in 1 hour' start_time = TimerEx Do Reporter.ReportEvent 4, "Iteration number = " & Cstr(i+1), "" '------------' 'Here code to run in cycle should be placed' '------------' Loop While Timer < start_time + timeout
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#4
Отправлено 08 июля 2011 - 08:16
Так не получится, потому что бесконечный цикл написан, а выход из него будет осуществляться через остановку скрипта, поэтому до отправки сообщения в лог дело никогда не дойдетМожно просто добавить переменную, которая при каждом прохождении цикла будет увеличиваться на 1, а в конце ее в репорт записать.
i = 0 do ... i = i + 1 loop Reporter.ReportEvent MicDone, "Столько раз", i(c синтаксисом могу напутать давно в qtp не работал)
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#5
Отправлено 08 июля 2011 - 09:33
Скажем есть скрипт:
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 Название темы не совсем верное, так как с одним вопросом разобрался сам.
Зачем делать цикл, сделайте Action и запускайте ее сколько угодно раз.
#6
Отправлено 08 июля 2011 - 09:45
Чтобы запустить сценарий произвольное количество раз все равно придется писать цикл :)Зачем делать цикл, сделайте Action и запускайте ее сколько угодно раз.
Ибо зацикливание сценариев, по умолчанию, предусмотренное в QTP, завязано на количество заполненных строк в DataTable. Не вижу смысла для такой просто операции создавать фейковые параметры с тучей пустых строчек.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#7
Отправлено 10 июля 2011 - 12:16
Это понятно:) У топикстартера, насколько я понимаю, уже есть условия остановки скрипта. Ему нужно просто узнать сколько раз этот самый скрипт пробежит.Так не получится, потому что бесконечный цикл написан, а выход из него будет осуществляться через остановку скрипта, поэтому до отправки сообщения в лог дело никогда не дойдет
#8
Отправлено 11 июля 2011 - 12:17
Топикстартер вообще куда-то пропал...Это понятно:) У топикстартера, насколько я понимаю, уже есть условия остановки скрипта. Ему нужно просто узнать сколько раз этот самый скрипт пробежит.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#9
Отправлено 18 июля 2011 - 21:53
1) Устанавливать на каждой итерации переменную окружения Windows
2) Писать счетчик в лог или в (первую строку) DataTable на каждой операции
3) Определить другое условие выхода из цикла (например, состояние переменной окружения)
4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.
Если хочется к пунтам 1/2 добавить дополнительной автоматизации, можно запускать QTP-сессию через COM, тогда сможете перехватить момент остановки теста по любому условию и выполнить дальше произвольный код.
#10
Отправлено 19 июля 2011 - 12:39
Отлично работает. Мы на этом построили вывод стектрейса в логи4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#11
Отправлено 27 июля 2011 - 18:44
Хм, а вот интересно, как вы стектрейсы собираете? Переопределяете RunAction, в методы вставляете маркеры? Или я о каких-то других стектрейсах думаю..Отлично работает. Мы на этом построили вывод стектрейса в логи
4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.
#12
Отправлено 28 июля 2011 - 19:21
У нас полный стектрейс именно кода без привязки к сценариям, потому чтоХм, а вот интересно, как вы стектрейсы собираете? Переопределяете RunAction, в методы вставляете маркеры? Или я о каких-то других стектрейсах думаю..
Отлично работает. Мы на этом построили вывод стектрейса в логи
4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.
1) мы слабо использовали сценарии. Предпочитали все выносить в библиотеки и работать непосредственно с кодом
2) Тяжело отследить сценарии и сделать иерархию в собственном логе такую же, как в родном qtp-шном логе. Хотя, мне сейчас в голову пришла мысль, что трейс сценариев можно точно так же через terminate объектов отслеживать, просто мы этой целью раньше не задавались, поэтому и не попробовали
Реализован через вставку "маркеров" во все функции - в начале кода каждой функции идет вызов функции, которая добавляет всю информацию о вызванной функции в трейс-хеш (имя функции, имена параметров и их значения; уровень, на котором была вызвана функция, считается автоматически). Когда случается любая ошибка или фейл проверки в лог автоматом выводится содержимое трейс-хеша
Для некоторых мелких функций, которые часто вызываются в цикле много тысяч раз сделано исключение, и их вызовы в трейс не попадают
RunAction, кажется, нельзя переопределить. Если знаете, как это сделать, очень прошу поделиться этим ноу-хау.
P.S. Кажется, пора выносить в отдельную тему обсуждение организации стек-трейса в QTP
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных