2016-07-18 2 views
0

Я пытаюсь извлечь значения из листа excel с помощью поставщика данных с хэш-картой. Теперь я могу прочитать целые строки из листа excel. Лист Excel имеет 3 столбцы «TestcaseId», «Testdata», «scriptname». Здесь мне нужно передать имя сценария в качестве параметра к методу тестирования от поставщика данных. Пожалуйста, помогите мне в достижении этого. Ниже приведен код датапаравизора с использованием hashmapКак передать параметр из листа данных dataprovider методу теста

@DataProvider(name="cbndataprovider") 
    public static Iterator<Object[]> cbntestdata() throws IOException 
    { 
     List <Object[]> alist = new ArrayList<Object[]>(); 
     OriginalExcelRW Excel = new OriginalExcelRW("F:\\anand_acer\\selenium\\cbnindia1\\Test_Data_Sheet.xlsx"); 
     XSSFSheet s = Excel.Setsheet("Test_Data"); 
     int rowcount = s.getLastRowNum(); 
     for(int i =1;i<=rowcount;i++) 
     { 
     Object[] obj = new Object[1]; 

     Map<String,String>hm=new HashMap<String,String>(); 

     hm.put(Excel.Readvalue(s, 0, 0), Excel.Readvalue(s, i, 0)); 
     hm.put(Excel.Readvalue(s, 0, 1), Excel.Readvalue(s, i, 1)); 
     hm.put(Excel.Readvalue(s, 0, 2), Excel.Readvalue(s, i, 2)); 
     hm.put(Excel.Readvalue(s, 0, 3), Excel.Readvalue(s, i, 3)); 

     System.out.println(Excel.Readvalue(s, 0, 0)+"...."+ Excel.Readvalue(s, i, 0)); 
     System.out.println(Excel.Readvalue(s, 0, 1)+"...."+ Excel.Readvalue(s, i, 1)); 
     System.out.println(Excel.Readvalue(s, 0, 2)+"...."+ Excel.Readvalue(s, i, 2)); 
     System.out.println(Excel.Readvalue(s, 0, 3)+"...."+ Excel.Readvalue(s, i, 3)); 

     obj[0]=hm; 
     alist.add(obj); 

     } 
     return alist.iterator(); 
     } 
    } 
+0

Что вы имеете в виду имени скрипта? Вы хотите передать 3 столбца + имя скрипта в свой тестовый метод? – CARE

+0

Я передам все 3 столбца от поставщика данных, но выбор строки будет выполнен на основе имени сценария, которое я передаю от датапараудера, к методу тестирования, а столбец столбца имен включается в 3 столбца. Метод тестирования должен принимать только параметр имени сценария. – Ak17

+0

, если ниже ответ отвечает на ваш вопрос, пожалуйста, отметьте вопросы как ответ – virusrocks

ответ

0

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

Изменить подпись поставщика данных для

public static Iterator<Object[]> cbntestdata(ITestNGMethod testContext) throws IOException 
{ 
String testName = testContext.getMethodName(); 

//your regular logic 

} 

использовать имя, полученное от TestContext для получения данных из Excel.

+0

Как передать это в методе тестирования. Так мой метод тестирования выглядит как @Test (groups = {"Regression"}, dataProvider = "cbndataprovider », dataProviderClass = dataprovider.cbn_DataProvider.class, приоритет = 1, включено = истина) \t общественные пустоты GB01_cbn_SearchNoRecords (Map Hm) \t {/ * тело * /} – Ak17

+0

Вы можете сделать это только путем добавления имя теста на карте и получение имени теста обратно с карты в методе тестирования – virusrocks

0

Если я правильно понял, ваш Excel имеет данные, соответствующие названию Script/ClassName, и вам нужен какой-то механизм, с помощью которого ваши тесты могут непосредственно идентифицировать выполняемый тест и отображать соответствующие ему данные. Вы можете добиться этого с помощью простого механизма: Предположим, что ваше имя класса - ABC.java. Согласно вашему первенствовать лист, в колонке Name «SCRIPTNAME», вы можете добавить строку как: ABC Теперь в вашем классе ABC.java, прежде чем делать что-либо вызвать функцию

getClass().getSimpleName() 

И связывают это читать ваше превосходство. Это, в свою очередь, будет читать «Testdata», сохраненное в соответствии со строкой «Scriptname» с соответствующим именем класса.

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