- Форум тестировщиков
- → Публикации Rommy1204
Публикации Rommy1204
4 публикаций создано Rommy1204 (учитываются публикации только с 28 сентября 2023)
По типу контента
По пользователю
#117254 Остановить TestNG после прохождения тестов
Отправлено автор: Rommy1204 18 апреля 2013 - 11:54 в Автоматизированное тестирование
Нашел решение, оказалось что многопоточность явно не убивается, есть 3 варианта решения:
1. System.exit(0);
2. Убить процесс (более мягкий способ)
3. Найти специальные вещи для многопоточного завершения процессов вебдрайвера (в процессе)
1. System.exit(0);
2. Убить процесс (более мягкий способ)
3. Найти специальные вещи для многопоточного завершения процессов вебдрайвера (в процессе)
#117210 Остановить TestNG после прохождения тестов
Отправлено автор: Rommy1204 17 апреля 2013 - 12:54 в Автоматизированное тестирование
Добрый день! Столкнулся со следующей проблемой:
Тесты написаны на фреймворке TestNG и запускаются через xml параллельно в двух браузерах.
Из IDE (Eclispe) все работает отлично.
Но возникла необходимость передать тесты в другую систему для CI
для этого я добавил в класс с тестами метод main (иначе runuble jar не создать)
и запускаю в нем программно testng.xml следующим образом:
public static void main(String[] args) throws Exception {
Dataxml.DataFromXml();
TestNG testNG = new TestNG(true);
//Парсим xml файл, делаем запуск тестов через suite/xml
Parser parser = new Parser("Data/testng.xml");
List<XmlSuite> suites = parser.parseToList();
testNG.setXmlSuites(suites);
//Добавляем листенер к тестам
MyListener myListener = new MyListener();
testNG.addListener(myListener);
//запускаем тесты
testNG.run();
}
тесты проходят успешно, все казалось бы также. Но после прохождения тестов, запускаемых из xml'ки работа testNG прекращается
А после прохождения тестов, запускаемых main методом - нет
Тесты проходят, браузеры закрываются, отчет отсылается, в консоль выводится стандартный результат Suite, но процесс не останавливается (сколько не жди)
Как быть? Никто не сталкивался?
Временное решение - System.exit(0);
Тесты написаны на фреймворке TestNG и запускаются через xml параллельно в двух браузерах.
Из IDE (Eclispe) все работает отлично.
Но возникла необходимость передать тесты в другую систему для CI
для этого я добавил в класс с тестами метод main (иначе runuble jar не создать)
и запускаю в нем программно testng.xml следующим образом:
public static void main(String[] args) throws Exception {
Dataxml.DataFromXml();
TestNG testNG = new TestNG(true);
//Парсим xml файл, делаем запуск тестов через suite/xml
Parser parser = new Parser("Data/testng.xml");
List<XmlSuite> suites = parser.parseToList();
testNG.setXmlSuites(suites);
//Добавляем листенер к тестам
MyListener myListener = new MyListener();
testNG.addListener(myListener);
//запускаем тесты
testNG.run();
}
тесты проходят успешно, все казалось бы также. Но после прохождения тестов, запускаемых из xml'ки работа testNG прекращается
А после прохождения тестов, запускаемых main методом - нет
Тесты проходят, браузеры закрываются, отчет отсылается, в консоль выводится стандартный результат Suite, но процесс не останавливается (сколько не жди)
Как быть? Никто не сталкивался?
Временное решение - System.exit(0);
#116316 Параллельный запуск разных тестов в разных браузерах
Отправлено автор: Rommy1204 27 марта 2013 - 07:14 в Автоматизированное тестирование
О, все, разобрался, нужно в XML в классе объявить методы и перечислить тесты, тогда они будут выполнены только для определенных тестов :)
#116267 Параллельный запуск разных тестов в разных браузерах
Отправлено автор: Rommy1204 26 марта 2013 - 10:44 в Автоматизированное тестирование
Добрый день, столкнулся с такой проблемой:
Есть ряд тестов, тест1, тест2, тест3, тест4, которые являются методами одного класса с аннотацией @Test
Тесты запускаются с помощью TestNG и выполняюстя параллельно сразу в 2 браузерах
Но как мне сделать запуск тестов так, чтобы (к примеру) два из них запускались в первом браузере, а два другие во втором.
Пробовал через следующие 3 вещи:
И к нему XML:
Использовал parameters, testName, gropus - не помогло.
В результате, я в любом случае наблюдаю выполнение 8 тестов (4 теста в каждом из 2 браузеров)
Как мне сделать так, чтобы часть тестов выполнялась только в одном браузере, а часть только в другом?
Но при этом, они по-прежнему проходили параллельно
Заранее спасибо :-)
Есть ряд тестов, тест1, тест2, тест3, тест4, которые являются методами одного класса с аннотацией @Test
Тесты запускаются с помощью TestNG и выполняюстя параллельно сразу в 2 браузерах
Но как мне сделать запуск тестов так, чтобы (к примеру) два из них запускались в первом браузере, а два другие во втором.
Пробовал через следующие 3 вещи:
package tests; import java.sql.SQLException; import org.apache.xpath.operations.Equals; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class NewTest { WebDriver driver; @BeforeTest @Parameters("browser") public void openBroswer(String browser){ if(browser.equalsIgnoreCase("FF")) { System.out.println("Firefox driver would be used"); driver = new FirefoxDriver(); } else if (browser.equalsIgnoreCase("IE")) { System.out.println("Ie webdriver would be used"); System.setProperty("webdriver.ie.driver", "./IEDriverServer.exe"); driver = new InternetExplorerDriver(); } } @Test(parameters = "FF") public void test1() { driver.get("http://ya.ru"); } @Test(testName = "Test_ff") public void test2() { driver.get("http://google.ru"); } @Test(groups = "FFonly") public void test3() { driver.get("http://mail.ru"); } @Test public void test4() { driver.get("http://gismeteo.ru/"); } @AfterTest public void CleanUp() { driver.quit(); } }
И к нему XML:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite thread-count="2" name="Suite" parallel="tests"> <test name="Test_ie"> <parameter name="browser" value="IE"></parameter> <classes> <class name="tests.NewTest"/> </classes> </test> <!-- Test_ie --> <test name="Test_ff"> <groups> <include name="FFonly"/> <parameter name="browser" value="FF"></parameter> <classes> <class name="tests.NewTest"/> </classes> </groups> </test> <!-- Test_ff --> </suite> <!-- Suite -->
Использовал parameters, testName, gropus - не помогло.
В результате, я в любом случае наблюдаю выполнение 8 тестов (4 теста в каждом из 2 браузеров)
Как мне сделать так, чтобы часть тестов выполнялась только в одном браузере, а часть только в другом?
Но при этом, они по-прежнему проходили параллельно
Заранее спасибо :-)
- Форум тестировщиков
- → Публикации Rommy1204
- Политика Конфиденциальности
- Правила форума ·