Это может быть ограниченным использованием для вас, так как я эффективно говорю «напишите свой собственный механизм выполнения тестов», но это вполне достижимо. Просто начните с малого и создайте функции по частям, и у вас будет что-то классное, которое в кратчайшие сроки удовлетворит ваши собственные уникальные потребности.
Несмотря на то, что, возможно, было бы полезно, чтобы ошибка, которая остановила тест, быстро вызвала (возможно, чтобы быстро диагностировать отказ, не просматривая подробные шаги), пожалуйста, не пренебрегайте отчетами, содержащими подробные шаги. Когда тест терпит неудачу, вам нужно знать, что пошло не так, и почему, и иметь запись о том, какие действия привели к этой ошибке.
Тем не менее, вот один из способов идти о выполнении ваших требований:
Написать тестовый драйвер с помощью поддерживаемого языка по вашему выбору, используя API QTP и запустить отдельный проход QTP для каждого теста. При вызове Test.Run вы можете контролировать, где результаты сохраняются, используя структуру RunResultsOptions. В ваших тестах просто оставьте «Когда ошибка возникает во время сеанса выполнения» как «всплывающее окно сообщения», поэтому он останавливается при возникновении ошибки. Если вам требуется другое поведение, тогда обрабатывайте его в каждом конкретном случае с помощью «on error resume next/on error goto 0/check Err.Number и Err.Description» -блоки. Никогда не переключайте его на «перейти к следующему шагу».
Проверить LastRunResults структуры возвращаемого Test.LastRunResults после запуска завершен. LastRunResults.Status сообщит вам статус прогона и, следовательно, позволит вам решить, хотите ли вы перейти к шагу №3, чтобы извлечь детали сбоя.
Parse results.xml из папки результатов после каждого прогона. Он будет расположен в папке {results folder} \ Report \ results.xml.Тривиально сканировать XML для всех неудавшихся шагов или только последний неудачный шаг, после чего вы можете получить сведения о шаге и сохранить их в другом файле в выбранном вами формате. Вы будете искать Элементы NodeArgs с атрибутом eType = Пользователь. Затем вы можете найти статус шага и подробные сведения о шаге. Если вам нужна дополнительная информация об ошибках, кроме журнала, автоматически созданного QTP, тогда вам необходимо уловить ошибки, как они есть, и добавить некоторые собственные репортеры.ReportEvent с более подробной информацией.
ли что-то весело с вашим результатом сводного файлом ...
Если вы надеетесь использовать сам QTP в качестве драйвера для партии тестов (т.е. нажмите на кнопку воспроизведение один раз и запустить все тесты) и, следовательно, поймать сообщения об ошибках из подтестов или что-то еще, я просто скажу это: не делайте этого, если только вы не запускаете несколько итераций теста такого же теста. Использование QTP для запуска всех ваших тестов, объединенных в один эпический пробный прогон, - это плохой способ сделать что-то по целому ряду причин, но я не собираюсь писать здесь эссе!
Я думаю, что это неопровержимо, не глядя на внутренности QTP, или вы лучше описываете, какой тип ошибки (и даже тогда). Это также полностью зависит от того, о какой ошибке вы говорите здесь. Синтаксические ошибки, ошибки репозитория объекта и т. Д. Вместо того, чтобы отслеживать номер Err.Number, QTP почти наверняка устанавливает его, создавая исключение, так как QTP * является * механизмом выполнения скриптов. – Xiaofu
Если вы хотите достичь чего-то определенного, связанного с обработкой ошибок или отчетами, зная эту информацию, возможно, вы могли бы добавить подробности этого вопроса и получить более полезные ответы. – Xiaofu
@xiaofu: Я просто хочу запускать тестовые скрипты в пакетном режиме, и когда тестовый скрипт терпит неудачу, я просто хочу написать описание ошибки и имя сценария сценария в файл и пропустить текущий тест и выполнить следующий тестовый скрипт. Все идеи? – bond007