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

Публикации Rommy1204

4 публикаций создано Rommy1204 (учитываются публикации только с 28 сентября 2023)


#117254 Остановить TestNG после прохождения тестов

Отправлено автор: Rommy1204 18 апреля 2013 - 11:54 в Автоматизированное тестирование

Нашел решение, оказалось что многопоточность явно не убивается, есть 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);



#116316 Параллельный запуск разных тестов в разных браузерах

Отправлено автор: Rommy1204 27 марта 2013 - 07:14 в Автоматизированное тестирование

О, все, разобрался, нужно в XML в классе объявить методы и перечислить тесты, тогда они будут выполнены только для определенных тестов :)



#116267 Параллельный запуск разных тестов в разных браузерах

Отправлено автор: Rommy1204 26 марта 2013 - 10:44 в Автоматизированное тестирование

Добрый день, столкнулся с такой проблемой:

Есть ряд тестов, тест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 браузеров)

Как мне сделать так, чтобы часть тестов выполнялась только в одном браузере, а часть только в другом?

Но при этом, они по-прежнему проходили параллельно

Заранее спасибо :-)