Прилагоди, ПДФ & амп; Пошаљите ТестНГ извештаје е-поштом у програм Селениум ВебДривер

Преглед садржаја:

Anonim

Пре него што се позабавимо било чим другим, прво да схватимо -

Зашто нам је потребно извештавање?

Када користимо Селениум или било који други алат за аутоматизацију, радимо на веб апликацији. Али наша сврха аутоматизације није само вежбање апликације која се тестира. Ми као испитивач аутоматизације треба да тестирамо апликацију, пронађемо грешке и пријавимо их развојном тиму или вишем менаџменту. Овде извештавање добија на значају за процес тестирања софтвера

ТестНГ извештавање

Библиотека ТестНГ пружа врло згодну функцију извештавања. Након извршења, Тестнг ће генерисати тест-оутпут директоријум у корену пројекта. Ова мапа садржи две врсте извештаја-

Индек.хтмл: Ово је комплетан извештај о тренутном извршавању који садржи информације попут грешке, група, времена, евиденција репортера, КСМЛ датотека тестнг.

емаилабле-репорт.хтмл: Ово је резимирани извештај о тренутном извршавању теста који садржи поруку Тест Цасе зелене боје (за пролазне тест случајеве) и црвене боје (за неуспеле тестне случајеве).

Како прилагодити ТестНГ извештај

Извештавање ТестНГ је прилично згодно, али ипак, понекад нам треба нешто мање података у извештајима или желимо да прикажемо извештаје у неком другом формату као што су пдф, екцел итд. Или желимо да променимо изглед извештаја.

ТестНГ извештај можемо прилагодити на два начина

  • Коришћење интерфејса ИТестЛистенер:
  • Коришћење ИРепортер интерфејса:

Интерфејс ИТестЛистенер

Овај интерфејс користимо када треба да прилагодимо извештај у реалном времену. Другим речима, ако извршавамо гомилу тест случајева у ТетНГ пакету и желимо да добијемо извештај о сваком тест примеру, онда након сваког тест случаја морамо да применимо интерфејс ИТестЛистенер. Овај интерфејс ће заменити онТестФаилуре, онТестСтарт, онТестСкиппед методу да пошаље исправан статус тренутног тест случаја.

Ево корака које ћемо следити

  • Направите класу рецимо РеалГуру99Репорт и у њу имплементирајте иТестЛистенер.
  • Примените методе иТестЛистенер
  • Креирајте тест методу и додајте класу РеалГуру99Репорт као слушалац у класу Тест Метход.

Пример кода

РеалГуру99ТимеРепорт.јава је класа извештавања у реалном времену. Имплементираће интерфејс ИТестЛистенер за извештавање

пакет тестНГРепорт.реалТимеРепорт;импорт орг.тестнг.ИТестЦонтект;импорт орг.тестнг.ИТестЛистенер;импорт орг.тестнг.ИТестРесулт;јавна класа РеалГуру99ТимеРепорт имплементира ИТестЛистенер {@Прегазитијавна празнина онСтарт (ИТестЦонтект арг0) {Систем.оут.принтлн ("Почетак извршења (ТЕСТ) ->" + арг0.гетНаме ());}@Прегазитијавна празнина онТестСтарт (ИТестРесулт арг0) {Систем.оут.принтлн ("Тест је започет ->" + арг0.гетНаме ());}@Прегазитијавна празнина онТестСуццесс (ИТестРесулт арг0) {Систем.оут.принтлн ("Тест Пасс ->" + арг0.гетНаме ());}@Прегазитијавна празнина онТестФаилуре (ИТестРесулт арг0) {Систем.оут.принтлн ("Тест није успео ->" + арг0.гетНаме ());}@Прегазитијавна празнина онТестСкиппед (ИТестРесулт арг0) {Систем.оут.принтлн ("Тест прескочен ->" + арг0.гетНаме ());}@Прегазитијавна празнина на Финисх (ИТестЦонтект арг0) {Систем.оут.принтлн ("КРАЈ ИЗВРШЕЊА (ТЕСТ) ->" + арг0.гетНаме ());}@Прегазитијавна празнина онТестФаиледБутВитхинСуццессПерцентаге (ИТестРесулт арг0) {// ТОДО Аутоматски генерисани квар методе}}

ТестГуру99РеалРепорт.јава је тест случај за прави извештај

пакет тестНГРепорт.реалТимеРепорт;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс.Листенерс;импорт орг.тестнг.аннотатионс.Тест;@Листенерс (РеалГуру99ТимеРепорт.цласс)јавна класа ТестГуру99РеалРепорт {@Тестпублиц воид тестРеалРепортОне () {Ассерт.ассертТруе (труе);}@Тестпублиц воид тестРеалРепортТво () {Ассерт.ассертТруе (нетачно);}// Тест случај зависи од неуспелог тестцасе = тестРеалРепортТво@Тест (зависиОнМетходс = "тестРеалРепортТво")публиц воид тестРеалРепортТхрее () {}}

Излаз ће изгледати као-

ИРепортер Интерфаце

Ако желимо да прилагодимо завршни извештај о тестирању који је генерисао ТестНГ, морамо да имплементирамо интерфејс ИРепортер. Овај интерфејс има само један метод за примену генерирања извештаја. Овај метод садржи све информације о комплетном извршењу теста на Листу <ИСуите>, а извештај можемо генерисати помоћу њега.

Пример кода

Гуру99Репортер.јава је датотека која се користи за прилагођавање извештаја

пакет тестНГРепорт.иРепортерРепорт;импорт јава.утил.Цоллецтион;импорт јава.утил.Дате;импорт јава.утил.Лист;импорт јава.утил.Мап;импорт јава.утил.Сет;импорт орг.тестнг.ИРепортер;импорт орг.тестнг.ИРесултМап;импорт орг.тестнг.ИСуите;импорт орг.тестнг.ИСуитеРесулт;импорт орг.тестнг.ИТестЦонтект;импорт орг.тестнг.ИТестНГМетход;импорт орг.тестнг.кмл.КсмлСуите;јавна класа Гуру99Репортер имплементира ИРепортер {@Прегазитијавна празнина генерише извештај (Листа <КсмлСуите> арг0, Листа <ИСуите> арг1,Стринг оутпутДирецтори) {// Други параметар ове методе ИСуите ће садржати сав извршени пакет.за (ИСуите иСуите: арг1) {// Добијање мапе резултата појединачног скупа истовременоМап <Стринг, ИСуитеРесулт> ресултс = иСуите.гетРесултс ();// Набавимо кључ мапе резултатаПодесите <Стринг> типке = ресултс.кеиСет ();// Идите на сваку вредност карте једну по једнуфор (Стринг кеи: кеис) {// Контекстни објекат тренутног резултатаИТестЦонтект цонтект = ресултс.гет (кеи) .гетТестЦонтект ();// Принт Суите детаље у конзолиСистем.оут.принтлн ("Назив пакета ->" + цонтект.гетНаме ()+ ":: Излазна евиденција извештаја ->" + цонтект.гетОутпутДирецтори ()+ ":: Име пакета ->" + цонтект.гетСуите (). ГетНаме ()+ ":: Датум почетка Време за извршење ->" + цонтект.гетСтартДате ()+ ":: Време завршног датума за извршење ->" + цонтект.гетЕндДате ());// Набавите мапу само за неуспешне тестовеИРесултМап ресултМап = цонтект.гетФаиледТестс ();// Добијање детаља о методи неуспелих тест случајеваКолекција <ИТестНГМетход> фаиледМетходс = ресултМап.гетАллМетходс ();// Петља један по један у свим неуспелим методамаСистем.оут.принтлн ("-------- СЛУЧАЈ НЕУСПЕЛОГ ТЕСТА ---------");за (ИТестНГМетход иТестНГМетход: фаиледМетходс) {// Испис детаља неуспелих тест случајеваСистем.оут.принтлн ("ТЕСТЦАСЕ НАМЕ ->" + иТестНГМетход.гетМетходНаме ()+ "\ нОпис ->" + иТестНГМетход.гетДесцриптион ()+ "\ нПриорити ->" + иТестНГМетход.гетПриорити ()+ "\ н: Датум ->" + нови датум (иТестНГМетход.гетДате ()));}}}}}

ТестГуру99ФорРепортер.јава је демонстрација за прилагођено извештавање

пакет тестНГРепорт.иРепортерРепорт;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс.Листенерс;импорт орг.тестнг.аннотатионс.Тест;// Додајте слушаоца да слушате извештај и напишите га када тестцас заврши@Листенерс (валуе = Гуру99Репортер.цласс)јавна класа ТестГуру99ФорРепортер {@Тест (приоритет = 0, опис = "тестРепортерОне")публиц воид тестРепортерОне () {// Положити тест случајаАссерт.ассертТруе (труе);}@Тест (приоритет = 1, опис = "тестРепортерТво")публиц воид тестРепортерТво () {// Тест случаја неуспехаАссерт.ассертТруе (нетачно);}}

Излаз ће бити попут-

ПДФ и емаил извештаја

Горња примена извештаја је прилично једноставна и јасна да бисте започели са прилагођавањем извештаја.

Али у корпоративном окружењу мораћете да направите високо прилагођене извештаје. Ево сценарија којим ћемо се позабавити

  1. Направите прилагођени извештај у ПДФ облику
  2. Снимајте снимке екрана САМО на грешкама. Линк до снимака екрана у ПДФ-у
  3. Пошаљите е-пошту ПДФ-а

ПДФ извештај изгледа овако

Да бисмо креирали пдф извештај, потребан нам је Јава АПИ ИТект . Преузмите је овде. Постоји још једна прилагођена класа слушалаца која заправо имплементира овај ИТект јар и ствара пдф извештај за нас. Преузмите је овде

Горња слика приказује задати формат генерисаног ПДФ извештаја. Можете га прилагодити

Ево како ћемо приступити овоме

Корак 1) Направите основну класу

Корак 2) Прилагодите ЈиперсионЛистернер.Јава (ПДФ код за креирање)

Корак 3) Направите ТестГуру99ПДФЕмаил.јава који ће извршавати тест случајеве, креирајте ПДФ

Корак 4) Додајте код на ТестГуру99ПДФЕмаил.јава да бисте ПДФ извештај послали е-поштом

Погледајмо ове кораке

Корак 1) Направите основну класу

Ова основна класа има функције за креирање ВебДривер-а и прављење снимка екрана

пакет ПДФЕмаил;импорт јава.ио.Филе;импорт орг.апацхе.цоммонс.ио.ФилеУтилс;импорт орг.опенка.селениум.ОутпутТипе;импорт орг.опенка.селениум.ТакесСцреенсхот;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.фирефок.ФирефокДривер;публиц цласс БасеЦласс {статички управљачки програм за ВебДривер;јавни статични ВебДривер гетДривер () {иф (дривер == нулл) {Управљачки програм за ВебДривер;Систем.сетПроперти ("вебдривер.гецко.дривер", "Ц: \\ гецкодривер.еке");дривер = нови ФирефокДривер ();}повратни возач;}/ *** Ова функција ће снимити снимак екрана* @парам вебдривер* @парам филеВитхПатх* @тхровс Изузетак* /јавна статичка празнина такеСнапСхот (ВебДривер вебдривер, Стринг филеВитхПатх) баца изузетак {// Претварање објекта веб управљачког програма у ТакеСцреенсхотТакесСцреенсхот сцрСхот = ((ТакесСцреенсхот) вебдривер);// Позовите методу гетСцреенсхотАс да бисте креирали датотеку сликеДатотека СрцФиле = сцрСхот.гетСцреенсхотАс (ОутпутТипе.ФИЛЕ);// Премештање датотеке слике на ново одредиштеДатотека ДестФиле = нова датотека (филеВитхПатх);// Копирај датотеку на одредиштеФилеУтилс.цопиФиле (СрцФиле, ДестФиле);}}

Корак 2) Прилагодите ЈиперсионЛистенер.јава

Држаћемо се подразумеваног формата извештаја. Али извршићемо 2 прилагођавања

  • Додавање кода који ће упутити ЈиперсионЛистенер да направи снимак екрана о грешци
  • Прилажете везу снимка екрана у ПДФ извештају

Додајте код да бисте приложили снимак екрана уз ПДФ извештај

Корак 3) Направите ТестГуру99ПДФЕмаил.јава који ће извршавати тест случајеве, креирајте ПДФ

  • Овде ћемо додати ЈиперионЛистенер.цласс као слушалац
  • Извршићемо 3 тест случаја.
  • Коришћење Ассерт.ассертТруе нећемо успети у 2 тест случаја док ћемо проћи само један.
  • Снимак екрана ће бити направљен за неуспеле тест случајеве само у складу са нашим прилагођавањима
пакет ПДФЕмаил;импорт јава.утил.Пропертиес;импорт јавак.ацтиватион.ДатаХандлер;импорт јавак.ацтиватион.ДатаСоурце;импорт јавак.ацтиватион.ФилеДатаСоурце;импорт јавак.маил.БодиПарт;импорт јавак.маил.Мессаге;импорт јавак.маил.МессагингЕкцептион;импорт јавак.маил.Мултипарт;импорт јавак.маил.Сессион;импорт јавак.маил.Транспорт;импорт јавак.маил.интернет.АддрессЕкцептион;импорт јавак.маил.интернет.ИнтернетАддресс;импорт јавак.маил.интернет.МимеБодиПарт;импорт јавак.маил.интернет.МимеМессаге;импорт јавак.маил.интернет.МимеМултипарт;импорт орг.опенка.селениум.ВебДривер;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс.АфтерСуите;импорт орг.тестнг.аннотатионс.Листенерс;импорт орг.тестнг.аннотатионс.Тест;импорт репортер.ЈиперионЛистенер;// Додајте слушалац за генерисање пдф извештаја@Листенерс (ЈиперионЛистенер.цласс)јавна класа ТестГуру99ПДФРепорт проширује БасеЦласс {Управљачки програм за ВебДривер;// Тестцасе није успео па се снимак екрана генерише@Тестјавни воид тестПДФРепортОне () {дривер = БасеЦласс.гетДривер ();дривер.гет ("хттп://гоогле.цом");Ассерт.ассертТруе (нетачно);}// Тестцасе није успео па се снимак екрана генерише@Тестјавни воид тестПДФРепорТво () {дривер = БасеЦласс.гетДривер ();дривер.гет ("хттп: /гуру99.цом");Ассерт.ассертТруе (нетачно);}// Тест тест случај ће бити положен, тако да на њему неће бити снимка екрана@Тестјавни воид тестПДФРепортТхрее () {дривер = БасеЦласс.гетДривер ();дривер.гет ("хттп://демо.гуру99.цом");Ассерт.ассертТруе (труе);}

Корак 4) Додајте код на ТестГуру99ПДФЕмаил.јава да бисте ПДФ извештај послали е-поштом

  • Користићемо напомену @АфтерСуите за слање е-поште ПДФ извештаја
  • Послаћемо е-пошту користећи Гмаил
  • Да бисте омогућили е-пошту, потребно је да увезете много датотека из библиотеке као што су маил.јар, поп3.јар, смптп.јар итд.
  • Пре него што извршите ово, унесите од, на адресу е-поште и лозинку
 // Након потпуног извршења пошаљите пдф извештај е-поштом@АфтерСуитепублиц воид теарДовн () {сендПДФРепортБиГМаил (" Ова адреса е-поште је заштићена од нежељених робота. Потребан вам је Јава-скрипта да бисте је видели.", "лозинка", "This email address is being protected from spambots. You need JavaScript enabled to view it.", "PDF Report", ""); } /** * Send email using java * @param from * @param pass * @param to * @param subject * @param body */ private static void sendPDFReportByGMail(String from, String pass, String to, String subject, String body) { Properties props = System.getProperties(); String host = "smtp.gmail.com"; props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); MimeMessage message = new MimeMessage(session); try { //Set from address message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); //Set subject message.setSubject(subject); message.setText(body); BodyPart objMessageBodyPart = new MimeBodyPart(); objMessageBodyPart.setText("Please Find The Attached Report File!"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(objMessageBodyPart); objMessageBodyPart = new MimeBodyPart(); //Set path to the pdf report file String filename = System.getProperty("user.dir")+"\\Default test.pdf"; //Create data source to attach the file in mail DataSource source = new FileDataSource(filename); objMessageBodyPart.setDataHandler(new DataHandler(source)); objMessageBodyPart.setFileName(filename); multipart.addBodyPart(objMessageBodyPart); message.setContent(multipart); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (AddressException ae) { ae.printStackTrace(); } catch (MessagingException me) { me.printStackTrace(); } } }

Комплетни пројекат преузмите овде

Напомена: Када кликнемо на везу снимка екрана у пдф-у, она ће приказати сигурносни дијалог. Морамо дозволити да овај дијалог отвори пдф.

Тако генерисани имејл изгледат ће овако

Резиме:

  • ТестНГ има уграђену способност извештавања.
  • Након комплетног извршења тест случајева, ТестНГ генерише фасциклу за тест и излаз у корену пројекта.
  • У фасцикли тест-оутпут налазе се два главна извештаја, индек.хтмл и емавабле-репорт.хтмл.
  • Да бисмо прилагодили ТестНГ извештај морамо да имплементирамо два интерфејса, ИТестЛистенер и ИРепортер.
  • Ако треба да добијемо извештај између извршења, потребан нам је ИТестЛистенер.
  • Да бисмо креирали коначни извештај након потпуног извршења, морамо да имплементирамо ИРепортер.
  • Узимајући снимак екрана, у програму Селениум ВебДривер морамо откуцати цаст ВебДривер у интерфејс ТакесСцреенСхот.
  • Да бисмо генерисали пдф извештаје, у пројекат морамо додати ИТект јар.

У овом водичу преузмите датотеке за пројекат Селениум за демонстрацију