2016-01-19 2 views
1

Я был в состоянии сделать тестирование управляемых данных с помощью жесткого кодирования тестовых значений в DataProvider:Предоставляет ли TestNG несколько наборов данных при использовании файла testng.xml?

@DataProvider(name = "XXXData") 
public Object[][] createXXXData() { 
    // Our test values here are hard-coded, which is OK 
    // You could also, say, read an Excel file and create the parameter sets on the fly 
    // The three values are: string to use, expected alphabetic, expected numeric count 
    return new Object[][] { 
      { "a1a", 2, 1}, 
      { "b2", 1, 2}, // Wrong num count - will fail 
      { "cc333", 2, 3}, 
      { "d44dd44", 3, 4}, 
      { "eeee55555", 5, 5}, // Wrong alpha count - will fail 
      { "ffff", 4, 0}, 
      { "000", 0, 3}, 
    }; 

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

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

Does testng.xml не поддерживает это?

<?xml version="1.0" encoding="UTF-8"?> 
<suite name="ParameterExampleSuite" parallel="false"> 
    <test name="ParameterTest"> 
     <classes> 
      <parameter name="message" value="a1a"></parameter> 
      <parameter name="alphaCount" value="2"></parameter> 
      <parameter name="numericCount" value="1"></parameter> 
      <class name="com.Acme.Business.Safes.XXX.XXXTest"/> 
     </classes> 
    </test> 
</suite> 

Я понимаю, что я могу написать код в моем createXXXData(), чтобы прочитать внешний файл и создать набор данных на основе этого. Все это используется с IntelliJ. Этот вопрос похож на TestNG DataProvider reading test data from the testng.xml config file?. Тем не менее, ответы там, похоже, не соответствуют варианту использования. Конечно, ответы не более удобны, чем чтение файла Excel или xml в самой программе.

+1

Предвзятое отношение к внешнему файлу - зачем это было? Если что-то есть правильный подход, значит, это нужно. Сегодня у вас есть 5 наборов данных, это может быстро развиваться благодаря внедрению новых функций. Ваш xml станет беспорядочным. –

+0

@niharika_neo Это отличный вопрос, хотя и не совсем соответствующий поиску ответа. Моя тестовая группа программного обеспечения не удобна в редактировании файлов исходного кода и предпочла бы иметь возможность изменять зону тестирования путем редактирования текстового файла. (Это глупая ситуация, но не такая глупая, как это могло бы звучать. Экспертиза тестовой группы находится в области использования системы). В конце концов, редактирование XML-файла, вероятно, тоже неприемлемо, но я хотел понять варианты. (Кроме того, я не знаю, как XML будет намного «беспорядочным», чем исходный файл Java, но это каламбур) –

ответ

1

Вам нужно будет определить несколько тестов вместо определения параметров в теге классов. (Я все еще считаю, что вы должны иметь данные во внешнем файле, а затем делать это в xml)

<test name="Automation Test Results" > 
    <parameter name="name" value="NV"></parameter> 
    <classes> 
     <class name="framework.tests.TestParams"> 
      <methods><include name="test1"></include></methods> 
     </class> 
    </classes> 
    </test> 
    <test name="Automation Test Results2" > 
    <parameter name="name" value="NV1"></parameter> 
    <classes> 
     <class name="framework.tests.TestParams"> 
      <methods><include name="test2"></include></methods> 
     </class> 
    </classes> 
    </test> 
+0

Точно отвечает на мой вопрос. Спасибо за помощь –

0

У вас может быть статический метод в другом классе и использовать его в dataProviderClass в вашем тесте. При этом все ваши данные будут в отдельном файле.

+0

Да, я упомянул об этой возможности в моем вопросе. –

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