2013-10-10 1 views
1

Предположим, что выполняется тестовый скрипт и возникает ошибка, может ли кто-нибудь объяснить, как QTP обнаруживает, что это ошибка? В основном, я хочу знать, как QTP обнаруживает эту ошибку? Например: Может быть, какая-то переменная, которая постоянно контролируется, чтобы проверить, произошла ли ошибка.Как QTP обнаруживает ошибку?

Я смотрел Err.Number, но это изменение после ошибки произошло. Как QTP знает, что Err.Number изменен?

Я просто хочу запустить тестовые скрипты в пакетном режиме, а когда сбой тестового скрипта я хочу записать описание ошибки и проверить имя сценария в файл и пропустить текущий тест и выполнить следующий тестовый скрипт. Есть идеи?

+0

Я думаю, что это неопровержимо, не глядя на внутренности QTP, или вы лучше описываете, какой тип ошибки (и даже тогда). Это также полностью зависит от того, о какой ошибке вы говорите здесь. Синтаксические ошибки, ошибки репозитория объекта и т. Д. Вместо того, чтобы отслеживать номер Err.Number, QTP почти наверняка устанавливает его, создавая исключение, так как QTP * является * механизмом выполнения скриптов. – Xiaofu

+1

Если вы хотите достичь чего-то определенного, связанного с обработкой ошибок или отчетами, зная эту информацию, возможно, вы могли бы добавить подробности этого вопроса и получить более полезные ответы. – Xiaofu

+0

@xiaofu: Я просто хочу запускать тестовые скрипты в пакетном режиме, и когда тестовый скрипт терпит неудачу, я просто хочу написать описание ошибки и имя сценария сценария в файл и пропустить текущий тест и выполнить следующий тестовый скрипт. Все идеи? – bond007

ответ

1

QTP сообщает о том, что выполнение теста не удалось в одной из следующих ситуаций

  • Объект, который должен выполнить действие не может быть идентифицирован
  • При выполнении действия действие терпит неудачу (например, незаконное значение)
  • Контрольная точка выходит из строя, это означает, что создатель теста указал состояние, которое должно иметь приложение, и оно фактически имеет другое значение.
  • Тест явно записывает ошибку в журнал (с использованием Reporter object)
+0

Если OP не означает «отчеты», а не «обнаруживает» каждый раз, я не уверен, что это отвечает на вопрос. Не совсем ясно, что они спрашивают, так что, возможно, вы лучший читатель разума, чем я.) – Xiaofu

3

Это может быть ограниченным использованием для вас, так как я эффективно говорю «напишите свой собственный механизм выполнения тестов», но это вполне достижимо. Просто начните с малого и создайте функции по частям, и у вас будет что-то классное, которое в кратчайшие сроки удовлетворит ваши собственные уникальные потребности.

Несмотря на то, что, возможно, было бы полезно, чтобы ошибка, которая остановила тест, быстро вызвала (возможно, чтобы быстро диагностировать отказ, не просматривая подробные шаги), пожалуйста, не пренебрегайте отчетами, содержащими подробные шаги. Когда тест терпит неудачу, вам нужно знать, что пошло не так, и почему, и иметь запись о том, какие действия привели к этой ошибке.

Тем не менее, вот один из способов идти о выполнении ваших требований:

  1. Написать тестовый драйвер с помощью поддерживаемого языка по вашему выбору, используя API QTP и запустить отдельный проход QTP для каждого теста. При вызове Test.Run вы можете контролировать, где результаты сохраняются, используя структуру RunResultsOptions. В ваших тестах просто оставьте «Когда ошибка возникает во время сеанса выполнения» как «всплывающее окно сообщения», поэтому он останавливается при возникновении ошибки. Если вам требуется другое поведение, тогда обрабатывайте его в каждом конкретном случае с помощью «on error resume next/on error goto 0/check Err.Number и Err.Description» -блоки. Никогда не переключайте его на «перейти к следующему шагу».

  2. Проверить LastRunResults структуры возвращаемого Test.LastRunResults после запуска завершен. LastRunResults.Status сообщит вам статус прогона и, следовательно, позволит вам решить, хотите ли вы перейти к шагу №3, чтобы извлечь детали сбоя.

  3. Parse results.xml из папки результатов после каждого прогона. Он будет расположен в папке {results folder} \ Report \ results.xml.Тривиально сканировать XML для всех неудавшихся шагов или только последний неудачный шаг, после чего вы можете получить сведения о шаге и сохранить их в другом файле в выбранном вами формате. Вы будете искать Элементы NodeArgs с атрибутом eType = Пользователь. Затем вы можете найти статус шага и подробные сведения о шаге. Если вам нужна дополнительная информация об ошибках, кроме журнала, автоматически созданного QTP, тогда вам необходимо уловить ошибки, как они есть, и добавить некоторые собственные репортеры.ReportEvent с более подробной информацией.

  4. ли что-то весело с вашим результатом сводного файлом ...

Если вы надеетесь использовать сам QTP в качестве драйвера для партии тестов (т.е. нажмите на кнопку воспроизведение один раз и запустить все тесты) и, следовательно, поймать сообщения об ошибках из подтестов или что-то еще, я просто скажу это: не делайте этого, если только вы не запускаете несколько итераций теста такого же теста. Использование QTP для запуска всех ваших тестов, объединенных в один эпический пробный прогон, - это плохой способ сделать что-то по целому ряду причин, но я не собираюсь писать здесь эссе!