2015-09-13 3 views
0

Рассмотрите сценарий, в котором я тестирую систему претензий. Я хочу представить цитаты и проверить общий счет. Предполагается, что две или более заявки в день будут получать мне бонус. Поэтому мне нужно проверить общую сумму после 1 претензии, снова после 2 претензий, а затем снова после удаления претензии и так далее. Исполнение будет ниже -TestNG - запустите один и тот же метод тестирования несколько раз из testNG xml

  1. Войти
  2. Добавить 1 претензии
  3. подсчитайте задолженность количество
  4. Добавить еще 1 претензии
  5. Рассчитать общую задолженность сумму
  6. Удалить требование
  7. Рассчитать общую сумму дебиторской задолженности
  8. Выход из системы

Мои TestNG.xml выглядит так -

<test> 
    <classes> 
     <class name="Quotes"> 
      <methods> 
       <include name="fLogin" /> 
       <include name="fAddQuotes" /> 
       <include name="fCheckTotal" /> 
       <include name="fAddQuotes" /> 
       <include name="fCheckTotal" /> 
       <include name="fRemoveQuotes" /> 
       <include name="fCheckTotal" /> 
       <include name="fLogout" /> 
      </methods> 
     </class> 
    </classes> 
</test> 

Как уже упоминалось, функция «fCheckTotal» должна вызываться несколько раз в том же тесте. И я хочу, чтобы можно было перемещать переменные числа функции add/remove между ними.

Но testNG выполняет только первое повторение методов (fAddQuotes, fCheckTotal).

Эффективно XML делает это -

  1. Вход
  2. Добавить 1 Претензия
  3. Рассчитать общую задолженность сумму
  4. Удалить требование
  5. Выход

Как я могу решить/обойти это?

+0

Запрос, идентичный моему, был опубликован раньше - http://stackoverflow.com/questions/15703499/including-one-method-multiple-times-in-a-test-in-testng-xml-to-execute -steps-mul Но в этом посте не было убедительного решения. –

+0

Может ли http://testng.org/doc/documentation-main.html#factories помочь? Вы можете запускать несколько тестов с использованием разных значений. –

+0

@ Гириш - Не думай так .. Я могу обрабатывать сразу 5 итераций метода. Проблема в том, что мне нужно запустить метод A (n раз), затем выполнить некоторые другие методы и снова запустить метод A (x times). Включая одно и то же имя метода более одного раза в testNG.xml не работает (как показано в моем вопросе). –

ответ

0

Ответ дается @bob в связи с вопросом, указанной в Вашем комментарии, я думаю, самое непосредственное отношение. (https://stackoverflow.com/a/16259647/1431434)

Вы не можете полагаться на TestNG для управления потоком.

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

https://stackoverflow.com/a/16259647/1431434

@Test 
public void Test1() { 

} 

@Test (dependsOnMethods={"Test1"}) 
public void Test2() { 

} 

@Test (dependsOnMethods={"Test2"}) 
public void Test3() { 

} 

Так первый подход может быть

определить группы, такие как login, changeLocation, FirstClaim, SecondClaim (сделать fAddQuotes и fCheckTotal частью группы FirstClaim и SecondClaim), и вы можете использовать эти группы вместе с dependOn ta г. Что может вызвать боль в долгосрочной перспективе в плане ремонтопригодности

Другого подход и лучший подход

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

, например

flogin(){} 
fAddQuotes(){} 
fCheckTotal(){} 
fRemoveQuotes(){} 
fLogout(){} 


@Test 
void Login() 
{ 
    fLogin() 
    Assert 
} 

@Test 
void testAddQuote() 
{ 
    fLogin() 
    fAddQuotes(){} 
    fCheckTotal(){} 
} 
@Test 
void testMultipleAddQuote() 
{ 
    fLogin() 
    fAddQuotes(){} 
    fCheckTotal(){} 
    fChangeLocation(){} 
    fAddQuotes(){} 
    fCheckTotal(){} 
} 

Я надеюсь, что это будет полезно.

0

У меня возникла такая же проблема, и я нашел обходное решение для этого. Измените свое преимущество, как показано ниже. Так что каждый класс запускается как тест. Это работает для меня

<?xml version="1.0" encoding="UTF-8"?> 
 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
 
<suite name="Suite" verbose="1"> 
 
    <test name="Test"> 
 
     <classes> 
 
     <class name="com.DemoOne"/> 
 
     </classes> 
 
    </test> <!-- Test --> 
 
    <test name="Test1"> 
 
     <classes> 
 
     <class name="com.DemoTwo"/> 
 
     </classes> 
 
    </test> <!-- Test --> 
 
    <test name="Test2"> 
 
     <classes> 
 
     <class name="com.DemoOne"/> 
 
     </classes> 
 
    </test> <!-- Test --> 
 
</suite> <!-- Suite -->

0

Если вы используете TestNG, вы должны использовать invocationCount:

@Test(invocationCount=4) 

Примечание: 4 это количество раз вы хотите, чтобы запустить свой метод.

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