Presever-order = true не работает в селеновой сетке - PullRequest
0 голосов
/ 09 августа 2011
@BeforeTest
@Parameters({"selenium.host", "selenium.port", "selenium.browser", "selenium.url" })
public void startServer(String host, String port, String browser, String url) throws Exception {      
        selenium = new DefaultSelenium(host, Integer.parseInt(port), browser, url);
        selenium.start();
    }

testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SL-Grid" parallel="false">

    <parameter name="username" value="test" />
    <parameter name="password" value="test1" /> 

<test name="SL-Chrome" preserve-order="true"> 
    <parameter name="selenium.host" value="localhost"></parameter> 
        <parameter name="selenium.port" value="5555"></parameter> 
        <parameter name="selenium.browser" value="*googlechrome"></parameter> 
        <parameter name="selenium.url" value="http://properurl:8080/"></parameter> 
        <classes>
            <class name="com.TestBase" /> // Base class where all generic methods, setUp and tearDown methods present
            <class name="com.Login"> // Login related methods and inherit TestBase
                <methods>
                    <include name="loginPage" />
                    <include name="signIn" />
                </methods>
            </class>
            <class name="com.Page1">
                <methods>               
                    <include name="clickLinkA" />
                    <include name="isTextBoxXXXPresent" />
</methods> </class></classes></test>

<test name="SL-Firefox" preserve-order="true"> 
    <parameter name="selenium.host" value="172.16.4.21"></parameter> 
        <parameter name="selenium.port" value="5556"></parameter> 
        <parameter name="selenium.browser" value="*firefox"></parameter> 
        <parameter name="selenium.url" value="http://properurl:8080/"></parameter> 
        <classes>
            <class name="com.TestBase" /> // Base class where all generic methods, setUp and tearDown methods present
            <class name="com.Login"> // Login related methods and inherit TestBase
                <methods>
                    <include name="loginPage" />
                    <include name="signIn" />
                </methods>
            </class>
            <class name="com.Page2">
                <methods>               
                    <include name="clickLinkB" />
                    <include name="isListBoxXXXPresent" />
</methods> </class></classes></test>

</suite>

Когда я запускаю комплект, он должен вызывать startServer () из TestBase -> loginPage () и SignIn () из Login -> clickLinkA () и isTextBoxXXXPresent() со страницы 1.Но во многих случаях система сначала вызывает методы из класса Page1, и поэтому происходит сбой (поскольку вход в систему не вызывается).

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

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Подумайте об использовании depenOnMethods, чтобы убедиться, что один тест, зависящий от другого, выполняется после него.Вы также можете установить числовой приоритет, где младшие цифры выполняются первыми.Значение по умолчанию для приоритета равно 0, поэтому вам нужно будет установить это значение только для тестов, запускаемых после тестов, для которых не установлен приоритет.

0 голосов
/ 09 августа 2011

Я думаю, что это может быть проблемой в TestNG, о которой вы можете сообщить ребятам TestNg.Но чтобы решить эту проблему, вы можете включить свой метод входа и входа в свой метод BeforeTest или вызвать его в своем тестовом методе в этом случае clickLinkA.Надеюсь, это решит ваши проблемы.

...