Изменение результатов тестирования
#1
Отправлено 07 декабря 2010 - 13:16
Имеется желание поменять результаты тестирования, а точнее добавить к результатам некоторую дополнительную информацию из тестирующего метода.
Далее выводить данную информацию в отчёте.
Как это можно сделать?
Пользуюсь Selenium + testNG + Java
Как вывести данную информацию в HTML отчёт я вроде как разобрался (по крайней мере я так думаю) но как добавить нужную информацию к результатам пока что не знаю (но я в процессе)
#2
Отправлено 07 декабря 2010 - 13:32
2. Каким образом сейчас выводите информацию в отчет?
3. Какие именно сложности в выводе дополнительной информации?
4. Что такое log4j и как им пользоваться Вам известно?
#3
Отправлено 07 декабря 2010 - 13:45
Не очень понятно, что значит "добавить к результатам", уточните, где именно Вы хотите видеть эту дополнительную информацию.Как вывести данную информацию в HTML отчёт я вроде как разобрался (по крайней мере я так думаю) но как добавить нужную информацию к результатам пока что не знаю (но я в процессе)
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#4
Отправлено 07 декабря 2010 - 13:47
Это сложный путь, чтобы эта информация попала в отчёты, надо делать собственный генератор.4. Что такое log4j и как им пользоваться Вам известно?
Канонический для TestNG способ -- использование org.testng.Reporter:
Reporter.log("Дополнительная информация");
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#5
Отправлено 07 декабря 2010 - 14:41
Ок
Дополняю свой вопрос.
Имеем тестовые классы с тестовым методом. Тестовые данные хранятся в XLS документе в виде таблиц с данными. Для каждого тестового сценария там выделена отдельная вкладка.
Каждый тестовый класс обладает информацией к какой вкладке обратиться.
Необходимо информацию об этой вкладке отобразить в отчёте. В нашем случае это "emailable-report.html".
Нужно это для удобства, что бы оператор при использовании тестов в случае ошибки сразу наглядно видел к какой вкладке стоит обратиться. Ещё необходимо напротив каждой строки с данными в отчёте отображать номер этой строки из файла с тестовыми данными - грубо говоря номер тестового случая.
Пока что понял что для модернизации отчёта надо переопределить метод
private void resultDetail(IResultMap tests, final String style)в классе "EmailableReporter"
Но вот как добавить эти данные в отчёт я не знаю. Пока что ковыряюсь с "TestListenerAdapter" но как то мне не очень нравиться этот способ (чем дальше в лес тем больше дров)
#6
Отправлено 07 декабря 2010 - 14:48
Вот это ключевой момент -- как именно эта информация представлена?Каждый тестовый класс обладает информацией к какой вкладке обратиться.
Кто обладает информацией, которую Вы хотите добавить к результатам (названия вкладок, номера строк)?
Хочется понять механизм того, как данные из Excel-файла попадают в тесты.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#7
Отправлено 07 декабря 2010 - 15:15
как попадает информация из Excel-файла не важно, там свой механизм (написан Итератор и через Дата провайдер они пихаются в тестовый метод).Вот это ключевой момент -- как именно эта информация представлена?
Каждый тестовый класс обладает информацией к какой вкладке обратиться.
Кто обладает информацией, которую Вы хотите добавить к результатам (названия вкладок, номера строк)?
Хочется понять механизм того, как данные из Excel-файла попадают в тесты.
Информацией о вкладке обладает тестовый класс - есть соответствующее приватное поле (ну и метод который значение данного поля возвращает). А для тестовых случаев можно завести ещё одно приватное поле и использовать его как счётчик вызовов тестового метода. И при каждом вызове метода пихать его в отчёт. А вот как запихать в отчёт всю эту информацию.
Тестовые данные и имя метода и класса туда попадают сами собой (ну как бы по умолчанию если всё правильно описать).
#8
Отправлено 07 декабря 2010 - 15:32
Отлично! Именно это я и хотел услышать. Добавьте в сигнатуру тестовых методов ещё пару служебных параметров -- название вкладки и номер строки, и передавайте их вместе со всеми остальными данными из провайдера, так они тоже станут "тестовыми данными".как попадает информация из Excel-файла не важно, там свой механизм (написан Итератор и через Дата провайдер они пихаются в тестовый метод).
Информацией о вкладке обладает тестовый класс - есть соответствующее приватное поле (ну и метод который значение данного поля возвращает). А для тестовых случаев можно завести ещё одно приватное поле и использовать его как счётчик вызовов тестового метода. И при каждом вызове метода пихать его в отчёт. А вот как запихать в отчёт всю эту информацию.
Тестовые данные и имя метода и класса туда попадают сами собой (ну как бы по умолчанию если всё правильно описать).
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#9
Отправлено 07 декабря 2010 - 16:16
8))) это конечно хорошо но не подходит, тестовых классов много, файлов с тестовыми данными ещё больше, перелопачивать такую кучу информации как то не с руки, проще переписать чуть чуть родительский класс всех тестовых классов или реализацию листенера вызывая в нужном месте метод возвращающий номер вкладки (или имя, но это не важно). Я думаю такой подход будет лучше. Вот только где это самое место которое мне необходимо.Отлично! Именно это я и хотел услышать. Добавьте в сигнатуру тестовых методов ещё пару служебных параметров -- название вкладки и номер строки, и передавайте их вместе со всеми остальными данными из провайдера, так они тоже станут "тестовыми данными".
как попадает информация из Excel-файла не важно, там свой механизм (написан Итератор и через Дата провайдер они пихаются в тестовый метод).
Информацией о вкладке обладает тестовый класс - есть соответствующее приватное поле (ну и метод который значение данного поля возвращает). А для тестовых случаев можно завести ещё одно приватное поле и использовать его как счётчик вызовов тестового метода. И при каждом вызове метода пихать его в отчёт. А вот как запихать в отчёт всю эту информацию.
Тестовые данные и имя метода и класса туда попадают сами собой (ну как бы по умолчанию если всё правильно описать).
#10
Отправлено 07 декабря 2010 - 16:47
#11
Отправлено 07 декабря 2010 - 17:03
спасибо за ответ, но я написал что репортер я буду пользовать репортер для формирования отчёта, но для того что бы в отчёт добавить нестандартные данные их надо в отчёт положить, думаю что в контекст. Основной вопрос в том как положить данные в контекст если они не передаются с основными тестовыми данными.Прекрасный класс Reporter (TestNG) никак не подходит?
Про листенер я уже писал, пока что разбираюсь с ним, но может у кого то есть более простой и очевидный вариант или уже готовое решение через листенер, просто я пока что не знаю к чему там обратиться и куда листенер пихать, или сделать его реализацию в моём базовом тестовом классе или описать отдельно мой листенер - правда как тогда получить доступ к методу который возвращает нужные данные в тестовых классах из этого моего отдельного класса листенера. А может сделать анонимный внутренний класс - реализацию интерфейса листенера. Короче решение в процессе.
Если есть кому что добавить буду рад помощи.
#12
Отправлено 07 декабря 2010 - 17:15
Вот в этом отчете поковыряйтесь, там есть примеры таких выводов в отчет сгенеренный TestNG: http://reportng.unco...mple/index.html
То есть в общем-то мысль тут уже озвучена вами была - переписать маму всех тестов так чтобы она получала нужные данные и складывала в лог. То есть вы же написали что тестовый класс информацией о вкладке обладает. Дальше вопрос насколько в вашем случае возможно дергать нужные нам методы в конструкторе.
#13
Отправлено 07 декабря 2010 - 21:11
если честно то не совсем уловил мысль вашу, за ссылку спасибо, поковыряюсь.Так класс репортер и используется для того чтобы запихивать левые сообщения в отчет от TestNG.
Вот в этом отчете поковыряйтесь, там есть примеры таких выводов в отчет сгенеренный TestNG: http://reportng.unco...mple/index.html
То есть в общем-то мысль тут уже озвучена вами была - переписать маму всех тестов так чтобы она получала нужные данные и складывала в лог. То есть вы же написали что тестовый класс информацией о вкладке обладает. Дальше вопрос насколько в вашем случае возможно дергать нужные нам методы в конструкторе.
Просто на сколько я понял репортер только генерирует отчёт, нужно только переписать нужную нам реализацию интерфейса IReporter. Но он берёт данные из контекста, опять же как я понял, но что бы их оттудова взять их туда надо положить во время выполнения тестовых сценариев. Вот этот момент меня и интересует. Складыванием данных вроде занимается ITestListenerAdapter, но я в этом не уверен, да и как правильно сделать не знаю, так что бы по фентшую (тяготы выбора правильного решения изложил в посте 11)
Кажется понял про какой репортер речь. Но он же вроде просто для логгирования а мне надо отчёт формировать на основе моих данных - отчёт который отображается в файле "emailable-report.html". А логгирование это отдельная тема, оно у меня тоже используется для вывода дополнительной информации к отчёту - чаще нужно для отладки тестов. Я же не могу записать в отчёт какие то определённые данные в переменную с определённым именем при помощи него. Или я вас всё-таки не правильно понял?
#14
Отправлено 08 декабря 2010 - 03:04
#15
Отправлено 08 декабря 2010 - 06:27
нет, это откровенно не то что мне надо, мне надо данные в контекст пихать, и в логе их не отображать, лог совершенно для другого предназначен.Ну можно записать данные с HTML разметкой, например, а потом CSS'ками сделать красиво. Или парсить. Тут в общем-то мысль простая - на входе пихаем нужные данные в отчет под видом логов, а на выходе делаем с этими данными красиво. Лог-то с репортера в отчет и так и так попадет.
#16
Отправлено 08 декабря 2010 - 07:24
Листенеры они скорее для отображения прогресса в реальном времени.
#17
Отправлено 08 декабря 2010 - 07:51
да понятное дело, спасибо, но если честно такой подход мне напоминает какой то костыль, мне всё таки импонирует вариант заморочиться с контекстом, тока как туда добраться пока что не могу понятьНу я как бы просто предлагаю брать IReporter, например, и править правила генерации отчетов так, чтобы сообщения из логов правильно маркированные не попадали в лог, а складывались куда нам нужно в отчете.
Листенеры они скорее для отображения прогресса в реальном времени.
#18
Отправлено 08 декабря 2010 - 08:06
Просто пока получается что в сигнатуру никак, да и вообще до запуска тестов мы данные которые нам нужны получить не можем (ну кроме названий тестовых методов). В принципе можно попробовать проапдейтить ITestResult чтобы он нам в результатах помимо Success/Failure/Skip выдавал бы еще и информацию о вкладке. Но пока мне такие способы видятся несколько трудоемкими - одно значение надо корректно протащить через все практически.
ЗЫ: Можно еще в IAttributes поковыряться.
#19
Отправлено 08 декабря 2010 - 08:44
ЗЫ: Можно еще в IAttributes поковыряться.
ды вот к нему и склоняюся, но если честно ума не дам как всё это провернуть. Вроде как всё там есть что надо, можно завести нужную переменную, но как достучаться не знаю 8(
#20
Отправлено 08 декабря 2010 - 08:54
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных