Перейти к содержимому

Фотография

Действия при неудачном тесте


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 Splinter

Splinter

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Гошик

Отправлено 17 мая 2011 - 15:43

Для начала основная задача - при неудачном тесте просто отправить EMAIL. В дальнейшем можно сделать с отчетом об ошибке и скриншотом, но для начала просто - если тест упал - то отправить письмо!

Как правильно организовать процес? Используется Selenium + testNg/junit + java + eclipse

Помогите разобраться или определиться куда копать! Нагуглить так ничего и не смог.
  • 0

#2 vaha

vaha

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Илья

Отправлено 17 мая 2011 - 17:15

Для начала основная задача - при неудачном тесте просто отправить EMAIL. В дальнейшем можно сделать с отчетом об ошибке и скриншотом, но для начала просто - если тест упал - то отправить письмо!

Как правильно организовать процес? Используется Selenium + testNg/junit + java + eclipse

Помогите разобраться или определиться куда копать! Нагуглить так ничего и не смог.

Смотреть статус теста в @AfterTest?
  • 0

#3 Vedzmak

Vedzmak

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Николай

Отправлено 18 мая 2011 - 07:22

Почитайте статьи http://software-test...enium-pageshots и предшествующие ей (ссылки в статье). Там про снятие скриншотов, очень полезная и познавательная.
На счёт получения результатов, можно поднять хадсон у себя поставить на него junit аддон, и он сам будет автоматом собирать данные и отсылать даж эти результаты на указанные мыла.
Возникает другой вопрос как прицепить к этому письму скриншоты которые были сняты.
  • 0

#4 Splinter

Splinter

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Гошик

Отправлено 18 мая 2011 - 09:25

Я читал статьи... со скриншотами проблем нету.. снимаются... единственное что не получилось, сделать так чтоб скриншот снимался при падении теста... (к чему собственно топик и был поднят... ) Но спасибо за линк..

и он сам будет автоматом собирать данные и отсылать даж эти результаты на указанные мыла.

Не нужны результаты на мыло.. нужно просто отправить письмо при падении теста..

Смотреть статус теста в @AfterTest?

Да, вот сэтим не могу разобраться... может кто-нибудь объяснить как это работает ?
  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 мая 2011 - 09:34

Я читал статьи... со скриншотами проблем нету.. снимаются... единственное что не получилось, сделать так чтоб скриншот снимался при падении теста... (к чему собственно топик и был поднят... ) Но спасибо за линк..

А что именно не получилось применить из описанного в статье "Selenium+TestNG: Автоматическое снятие скриншотов при неуспешном прохождении теста"?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 мая 2011 - 09:35

Не нужны результаты на мыло.. нужно просто отправить письмо при падении теста..

Да, чтобы отправлять письмо, listener придется переделать, чтобы он не в отчёт добавлял снятый скриншот, а отправлял его на указанный адрес. Для отправки используйте JavaMail.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 мая 2011 - 09:42

Смотреть статус теста в @AfterTest?

Да, вот сэтим не могу разобраться... может кто-нибудь объяснить как это работает ?

Проще использовать IInvokedMethodListener2 или IInvokedMethodListener.

Но если хочется -- можно проверять статус выполненного теста в @AfterMethod (именно в нём, а не в @AfterClass или @AfterTest, ведь Вы же статус каждого метода собираетесь проверять, верно?).
Для этого надо в список параметров добавить параметр типа ITestResult:
@AfterMethod
	public static void checkStatus(ITestResult result) {
		if (result.isSuccess()) {
			return;
		} else {
			// test failed!!! do whatever you want
		}
	}

  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#8 Splinter

Splinter

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Гошик

Отправлено 18 мая 2011 - 10:58

А что именно не получилось применить из описанного в статье "Selenium+TestNG: Автоматическое снятие скриншотов при неуспешном прохождении теста"?


Статьи пока только прочитал..
попробую применить когда разберусь как вообще лисенеры работают... (моцк вскипает) скриншоты снимаю пока Loggingselenium

Для отправки используйте JavaMail.

на него и поглядываю

@AfterMethod

Это выглядит как то что нужно... сегодня сяду изучать...

Проще использовать IInvokedMethodListener2 или IInvokedMethodListener.

А где можно доступно прочитать как этим пользоваться? (можно даже на английском)
  • 0

#9 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 мая 2011 - 15:32

Проще использовать IInvokedMethodListener2 или IInvokedMethodListener.

А где можно доступно прочитать как этим пользоваться? (можно даже на английском)

http://testng.org/do...estng-listeners
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#10 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 18 мая 2011 - 21:07

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;


public class SimpleMail {

    private static final String SMTP_HOST_NAME = "smtp.gmail.com";
    private static final int SMTP_HOST_PORT = 465;
    private static final String SMTP_AUTH_USER = "XXXXX@gmail.com";
    private static final String SMTP_AUTH_PWD  = "YYYYY";


    public void sendMail(String subj, boolean isOk) throws Exception{
        Properties props = new Properties();

        props.put("mail.transport.protocol", "smtps");
        props.put("mail.smtps.host", SMTP_HOST_NAME);
        props.put("mail.smtps.auth", "true");
        // props.put("mail.smtps.quitwait", "false");

        Session mailSession = Session.getDefaultInstance(props);
        mailSession.setDebug(true);
        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        message.setSubject("TestResults");
        message.setContent(subj, "text/plain");
        if (isOk)
        	message.addRecipient(Message.RecipientType.TO,
        			new InternetAddress(SetUp.OkSubject));
        else message.addRecipient(Message.RecipientType.TO,
    			new InternetAddress(SetUp.failSubject));

        transport.connect
          (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);

        transport.sendMessage(message,
            message.getRecipients(Message.RecipientType.TO));
        transport.close();
    }
}

public class TestListener extends TestListenerAdapter {

          @Override
	  public void onTestFailure(ITestResult tr) {
		notificate(false);
	  }
	 
	  @Override
	  public void onTestSkipped(ITestResult tr) {
		notificate(false);
	  }
	 
	  @Override
	  public void onTestSuccess(ITestResult tr) {
		notificate(true);
	  }
	 
	  private void  notificate(boolean isTestPassed) {
		SimpleMail sl = new SimpleMail();
	    if (!isTestPassed) {
	    	try {
			sl.sendMail(SetUp.failTextForMail, false);
			} catch (Exception e) {
				e.printStackTrace();
			}
			
	    }
	    else {
	    	try {
			sl.sendMail(SetUp.OkText,true);
			} catch (Exception e) {
				e.printStackTrace();
			}
	    }
	  }

}


примерно как-то так, код старый - я его давно не смотрел
но, думаю, первые шаги поможет сделать

ну и аннотацию добавьте, конечно, к тесту чтобы слушатель работал
@Listeners(myPackage.TestListener.class)

  • 0

#11 Splinter

Splinter

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Гошик

Отправлено 19 мая 2011 - 11:00

Спасибо большое ... сижу разбираюсь..
  • 0

#12 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 20 мая 2011 - 02:42

Пожалуйста
Если что-то непонятно - спрашивайте
  • 0

#13 Splinter

Splinter

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Гошик

Отправлено 20 мая 2011 - 11:06

За основу взял Проэкт Алексея приаттаченый внизу в этой статье:
Selenium+TestNG: Автоматическое снятие скриншотов при неуспешном прохождении теста

Разобрался, настроил... при падении теста скрин снимается и летит на почту..

Осталась нерешенная проблема:

не могу понять как конфигурировать testnghelper чтобы добавить автоматический запуск сервера с разными браузерами...
(чтобы не запускать сервер вручную)

В идеале было б добавить класс с вариантами запуска сервера с разными браузерами и вызывать их из отдельных тестов по очереди.

подскажите как лучше это организовать ?
  • 0

#14 kuroai

kuroai

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Ольга Ыунапуу


Отправлено 26 мая 2011 - 13:11

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

но возникла такая проблема - при использовании Jenkins у меня отправляется отчет с результатами тестов из предыдущей сборки, так как новые результаты тестов сохраняются в папку с отчетами уже после завершения сборки и прогона тестов, а отправка отчета срабатывает раньше, во время запуска тестов.
Можно это как-то поправить?
  • 0

#15 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 27 мая 2011 - 03:33

Можно это как-то поправить?

можно, но вам не в эту тему
это уже специфика настроек средства непрерывной интеграции
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных