Как передать параметр из таблицы Excel поставщика данных в метод Test

java selenium-webdriver hashmap testng-dataprovider

861 просмотра

2 ответа

45 Репутация автора

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

@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();
        }
    }
Автор: Ak17 Источник Размещён: 18.07.2016 06:18

Ответы (2)


0 плюса

724 Репутация автора

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

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

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

//your regular logic

}

используйте имя, полученное из testContext, чтобы получить данные из Excel.

Автор: virusrocks Размещён: 19.07.2016 04:21

0 плюса

93 Репутация автора

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

getClass().getSimpleName()

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

Автор: Priyanka Chaturvedi Размещён: 11.09.2016 04:29
Вопросы из категории :
32x32