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

Фотография

Как заставить выполнятся тесты одного конфиг файла TestNG по-очереди


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

#1 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 05 сентября 2011 - 15:42

Привет
Только начинаю разбираться со связкой TestNG + Selenium RC, прошу помочь со следующим вопросом

Имею конфиг файл TestNG:

<!DOCTYPE suite SYSTEM "http://testng.org/te...estng-1.0.dtd">
<suite thread-count="5" verbose="1" name="Firefox browser" annotations="JDK">
<parameter name="host" value="localhost" />
<parameter name="port" value="4444" />
<parameter name="browser" value="*firefox" />
<parameter name="url" value="http://172.30.198.101:2011" />

<test name="Test1" junit="false" preserve-order="true">
<classes>
<class name="com.BrowserHMI.AllTests">
<methods>
<include name="Test02008"/>
</methods>
</class>
</classes>
</test>

<test name="Test2" junit="false" preserve-order="true">
<classes>
<class name="com.BrowserHMI.AllTests">
<methods>
<include name="Test02039"/>
</methods>
</class>
</classes>
</test>
</suite>

======================
Мой Java класс:
...
public class AllTests extends SeleneseTestCase {

@BeforeSuite(alwaysRun = true)
@Parameters({"host", "port", "browser", "url"})
public void setUp(String host, int port, String browser, String url) {
selenium = new DefaultSelenium(host, port, browser, url);
selenium.start();
}


@AfterSuite(alwaysRun = true)
private void stopTest() {
selenium.stop();
}


@Test(groups = { "TS02", "QNX" }, priority = 2)
public void Test02008() throws Exception {
.....
}

...

@Test(groups = { "TS02", "QNX" }, priority = 1)
public void Test02039() throws Exception {
.....
}

...

======================

Сейчас при запуске этого конфиг-файла запускается класс com.BrowserHMI.AllTests дважды в одно время и при этом в отчете первый тест фейлится с ошибкой "java.lang.NullPointerException
at com.BrowserHMI.AllTests.Test02008(AllTests.java:80)"

Мне бы хотелось чтобы запустился сначала один метод Test02008 из класса com.BrowserHMI.AllTests и потом запустился другой метод Test02039 из того же класса BrowserHMI.AllTests

Как это сделать?
  • 0

#2 barancev

barancev

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

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


Отправлено 05 сентября 2011 - 19:39

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

#3 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 06 сентября 2011 - 07:02

Убрать thread-count="5"

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

пробовал разнести тестовые методы по разным классам:

<!DOCTYPE suite SYSTEM "http://testng.org/te...estng-1.0.dtd">
<suite verbose="1" name="Firefox browser" annotations="JDK">

<test name="Test1" junit="false" preserve-order="true">
<classes>
<class name="com.BrowserHMI.AllTests">
<methods>
<include name="Test02008"/>
</methods>
</class>
</classes>
</test>

<test name="Test2" junit="false" preserve-order="true">
<classes>
<class name="com.BrowserHMI.AllTests2">
<methods>
<include name="Test02039"/>
</methods>
</class>
</classes>
</test>
</suite>

в итоге оба теста проходят без ошибки, но классы запускаются одновременно (даже без thread-count="5")
не понимаю в чем проблема (
  • 0

#4 barancev

barancev

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

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


Отправлено 06 сентября 2011 - 07:35

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

#5 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 06 сентября 2011 - 07:44

А как запускаете?

через ANT

вот build файл


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE project [
]>

<project name="BrowserHMI" default="usage" basedir=".">

<description>
This buildfile is used to compile and build the automated tests for BrowserHMI project written on Java.
</description>

<!-- ========== Initialize Properties =================================== -->
<property environment="env"/>
<property file="./build.properties"/>

<target name="start-selenium-server">
<java jar="${at.home}/lib/selenium-server-standalone-2.3.0.jar" fork="true" />

</target>

<target name="setClassPath" unless="test.classpath">
<path id="classpath_jars">
<fileset dir="${at.home}/lib" includes="*.jar"/>
</path>
<pathconvert pathsep=":"
property="test.classpath"
refid="classpath_jars"/>
</target>

<target name="init" depends="setClassPath">
<tstamp>
<format property="start.time" pattern="dd/MM/yyyy hh:mm aa" />
</tstamp>
<condition property="ANT"
value="${env.ANT_HOME}/bin/ant.bat"
else="${env.ANT_HOME}/bin/ant">
<os family="windows" />
</condition>
<taskdef name="testng" classpath="${test.classpath}"
classname="org.testng.TestNGAntTask" />

</target>

<!-- clean -->
<target name="clean">
<delete dir="${test.dest}"/>
</target>

<!-- compile -->
<target name="compile" depends="init, clean" >
<delete includeemptydirs="true" quiet="true">
<fileset dir="${test.dest}" includes="**/*"/>
</delete>
<echo message="making directory..."/>
<mkdir dir="${test.dest}"/>
<echo message="classpath: ${test.classpath}"/>
<echo message="compiling..."/>
<javac
debug="true"
destdir="${test.dest}"
includes="AllTests.java"
srcdir="${test.src}"
target="1.5"
classpath="${test.classpath}"
>
</javac>
</target>

<!-- build -->
<target name="build" depends="init">
</target>

<!-- run -->
<target name="run" depends="compile">
<testng classpath="${test.classpath}:${test.dest}" suitename="AllTestsResults">
<xmlfileset dir="${at.home}/TestNG_configs" includes="ChromeConfigQNX.xml, ChromeConfigWIN.xml, FirefoxConfigQNX.xml, FirefoxConfigWIN.xml, OperaConfigQNX.xml, OperaConfigWIN.xml"/>
</testng>
<!--
<testng classpath="${test.classpath}:${test.dest}" groups="fast">
<classfileset dir="${test.dest}" includes="example1/*.class"/>
</testng>
-->
</target>


<!-- rerun failed tests -->
<target name="rerun-failed-tests" depends="compile">
<testng classpath="${test.classpath}:${test.dest}" suitename="RerunResults">
<xmlfileset dir="${at.home}/test-output" includes="testng-failed.xml"/>
</testng>
<!--
<testng classpath="${test.classpath}:${test.dest}" groups="fast">
<classfileset dir="${test.dest}" includes="example1/*.class"/>
</testng>
-->
</target>

</project>
  • 0

#6 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 12 сентября 2011 - 08:34

вопрос все еще актуален )
  • 0

#7 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 11 октября 2011 - 08:33

вопрос все еще актуален )

up
  • 0

#8 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 13 октября 2011 - 10:34

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite verbose="1" name="Firefox browser" annotations="JDK">
<parameter name="host" value="localhost" />
<parameter name="port" value="4444" />
<parameter name="browser" value="*firefox" />
<parameter name="url" value="http://172.30.198.101:2011" />

<test name="Test1and2" junit="false" preserve-order="true">
	<classes>
		<class name="com.BrowserHMI.AllTests">
			<methods>
				<include name="Test02008"/>
				<include name="Test02039"/>
			</methods>
		</class>
	</classes>
</test>

</suite>
только если так, с обязательным использованием preserve-order="true", иначе TestNG по-умолчанию запускает тесты в случайном порядке
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#9 Booch

Booch

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Чубков Дмитрий Анатольевич

Отправлено 14 октября 2011 - 11:56

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite verbose="1" name="Firefox browser" annotations="JDK">
<parameter name="host" value="localhost" />
<parameter name="port" value="4444" />
<parameter name="browser" value="*firefox" />
<parameter name="url" value="http://172.30.198.101:2011" />

<test name="Test1and2" junit="false" preserve-order="true">
	<classes>
		<class name="com.BrowserHMI.AllTests">
			<methods>
				<include name="Test02008"/>
				<include name="Test02039"/>
			</methods>
		</class>
	</classes>
</test>

</suite>
только если так, с обязательным использованием preserve-order="true", иначе TestNG по-умолчанию запускает тесты в случайном порядке


спасибо за ответ, сейчас так и делаю..
наверное я не совсем корректно задал вопрос изначально
я бы хотел разнести разные группы тестов по разным тегам test для более наглядного репорта который генерирует TestNG

Например
<test> тесты группы X класса A </test>
<test> тесты группы Y класса A </test>
<test> тесты группы Z класса A </test>
...

Или хотя бы так
<test> тесты группы X класса A </test>
<test> тесты группы Y класса B </test>
<test> тесты группы Z класса C </test>
...

Проблема в том, что у меня запускаются все эти тесты одновременно, а хочется чтобы по очереди
  • 0


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

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