2014-11-07 3 views
1

я в настоящее время есть два различных тесты во (SUITE1.XML и SUITE2.xml) с различными конфигурациями (например, браузеры, Os) ...Есть ли способ запустить два XML-файла в testng.xml параллельно?

Я называю оба АПАРТАМЕНТАХ внутри testng.xml работать на saucelabs ... и прекрасно работает ... только то, что меня беспокоит, я хочу, чтобы эти костюмы, чтобы идти параллельно вместо последовательной ...

выход я получаю

 
[TestNG] Running: 
    /Users/muzamilabbasi/Automation/BaublebarTest/Suite1.xml 

This is Browser String FIREFOX 
This is Platform String WIN8 
This is Version String 25 
This is Browser String FIREFOX 
This is Platform String WIN8 
This is Version String 25 
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). 
log4j:WARN Please initialize the log4j system properly. 
Page Title isGoogle 
Page Title isGoogle 

=============================================== 
mysuite1 
Total tests run: 2, Failures: 0, Skips: 0 
=============================================== 

[TestNG] Running: 
    /Users/muzamilabbasi/Automation/BaublebarTest/Suite2.xml 

This is Browser String FIREFOX 
This is Platform String XP 
This is Version String 7 
This is Browser String FIREFOX 
This is Platform String XP 
This is Version String 7 
Page Title isGoogle 
Page Title isGoogle 

Я искал много веб и в основном ответы У меня есть ANT {PARALLEL} задача, которую я могу достичь, но как? Мне нужен пример. Пожалуйста, помогите.

Я использую MacOS & TestNG 6.8.6

ответ

2

Вам не нужно запускать костюмы параллельно .... вместо этого вы можете написать два теста в одном testng.xml костюме и запустить его параллельно.

Если вы хотите использовать две различные конфигурации для различных тестов (браузер/OS и т.д.) делают, что в качестве параметра в testng.xml и использовать селен сетку, чтобы перенаправить каждые потоки для соответствующих узлов

Имейте взгляд на ниже пример

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Test Suit" verbose="2" parallel="tests"> 

<test name="Regression Test"> 
    <parameter name="browser" value="firefox" /> 
    <parameter name="os" value="win7" /> 
    <classes> 
     <class name="pakagename.classname" /> 
    </classes> 
</test> 

<test name="Smoke Test"> 
    <parameter name="browser" value="chrome" /> 
    <parameter name="os" value="mac" /> 
    <classes> 
     <class name="pakagename.classname" /> 
    </classes> 
</test> 

Также может быть, вы можете запустить два testng.xml костюмы с использованием ANT или Maven. Но я предпочитаю 1-й. Пожалуйста, добавьте ниже раздел в pom.xml вашего Maven проекта

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <suiteXmlFiles> 
        <suiteXmlFile>testng1.xml</suiteXmlFile> 
        <suiteXmlFile>testng2.xml</suiteXmlFile> 
       </suiteXmlFiles> 
       <reportsDirectory>${basedir}/src/test/java/</reportsDirectory> 
      <testFailureIgnore>true</testFailureIgnore> 
      </configuration> 
     </plugin> 
     <plugins> 
<build> 
+0

Bharat Я не дал ему выстрела, я избегаю использовать maven, поскольку у нас есть ANT, поэтому я посмотрю, смогу ли я поместиться в ANT где-нибудь, если вы могли бы помочь по достоинству оценить. –

+0

@Muzamil: У меня есть не работал в АНТ. Вы можете попробовать решение «tim-slifer», вызывать его из ANT. Для запуска slave xmls параллельно с помощью master xml добавьте '' в ваш мастер xml. Опять же я не уверен, что это послужит вашей цели, просто намек. – Babulu

+0

Спасибо, Bharat, я обязательно его попробую –

5

Другой вариант заключается в использовании набор-оф-люкс. Я предопределю это, сказав, что прошло некоторое время с тех пор, как я работал с этой настройкой, но, надеюсь, вы найдете здесь достаточно подробностей, чтобы хотя бы начать.

Во-первых, нужно определить два (или более) свита XML файлы:

<suite name="Suite1"> 
    <test name="test1"> 
     <classes> 
      <class name="fully.qualified.ClassName" /> 
     </classes> 
     <methods> 
      <include name="method1" /> 
     </methods> 
    </test> 
</suite> 

и ...

<suite name="Suite2"> 
    <test name="test2"> 
     <classes> 
      <class name="fully.qualified.ClassName" /> 
     </classes> 
     <methods> 
      <include name="method2" /> 
     </methods> 
    </test> 
</suite> 

Тогда вы бы определить люкс-на-люкс XML файл:

<suite name="suite of suites"> 
    <suite-files> 
     <suite-file path="Suite1.xml" /> 
     <suite-file path="Suite2.xml" /> 
    </suite-files> 
</suite> 

ли к сведению, что suite-file значение пути относительный путь от текущего люкс-из-сьютов XML-файла в XM L, который вы вызываете. Если они находятся в одном каталоге, просто будет достаточно имени файла.

Кроме того, оба типа XML поддерживают тег <parameter>. Стандартный XML-пакет будет читать как на <suite>, так и на уровнях <test>, и я обнаружил, что теги <parameter> на уровне <suite> в XML-файле пакета Suite также будут работать.

Наконец, при выполнении вам нужно будет только передать XML-файл пакета Suite в качестве аргумента файла вашего пакета.

EDIT: Вот как я смог сделать мои два комплекта параллельными. Трюк правильно настраивал мой метод main().

public class TestRunner 
{ 
    public static void main(String[] args) 
    { 
     TestNG testng = new TestNG(); 
     TestListenerAdapter adapter = new TestListenerAdapter(); 
     List<String> suites = new ArrayList<String>(); 

     testng.addListener(adapter); 
     suites.add(args[0]); 
     testng.setTestSuites(suites); 
     testng.setParallel("parallel"); 
     testng.setSuiteThreadPoolSize(5); 
     testng.setOutputDirectory("path to output"); 
     testng.run(); 
    } 
} 

Затем в командной строке:

java -jar ParallelSuiteDemo.jar SuiteOfSuites.xml 

Note, мой баночку и все XML-файлы были в той же директории с этой конфигурацией. Командная строка args и <suite-file> записей необходимо будет правильно настроить, если вы хотите использовать структуру каталогов.

Это привело к тому, что мои два файла suite.xml работали параллельно на селеновой сетке.

Могут быть лучшие способы сделать это, если быть честным. Это то, что сработало для меня, когда я пытался что-то сделать.

+0

Привет, Тим, я действительно пробовал эту конфигурацию с помощью наборов master & slave, но проблема в том, что я использую лаборатории соуса для выполнения своих тестов, поэтому давайте скажем, что у меня есть наборы (SUITE1.xml, 20 тестовых примеров и SUITE2.xml, имеющих 20 тестовых файлов), как для различной конфигурации, я назвал их внутри моего MasterSUite.xml, что я не получаю его запуск SUITE1.xml сначала после завершения SUITE1.xml он запускает SUITE2.xml .... Я хочу, чтобы оба (SUITE1.xml и SUITE2.xml) запускались одновременно –

+0

Я вижу, что вы говорите. Мне нужно пройти какой-то старый код, чтобы найти специфику, но у меня была такая работа, как вы описываете то, что хотите видеть. Единственная разница, однако, заключалась в том, что я работал на внутренней гриде, а не на Соусе ... хотя я бы подумал, что Соус будет работать с такими вещами, поскольку конфигурация все в коде. Мне понадобится несколько дней, но я верну это в рабочий заказ на своем конце и опубликую свои выводы в надежде, что вы сможете сделать то же самое с Sauce и получить желаемый результат. Кажется, я помню, что для этого было какое-то неясное положение. –

+0

Тим, я буду очень благодарен .. Спасибо .. –

0

Да, вы можете сделать это с помощью атрибута "suitethreadpoolsize" из TestNG

<suite-files suitethreadpoolsize="2"> 
    <suite-file path="suite1.xml" /> 
    <suite-file path="suite2.xml" /> 
</suite-files> 

Обратитесь на официальный сайт TestNG для более подробной информации http://testng.org/doc/documentation-main.html#parallel-running

Спасибо!

Смежные вопросы