Обработка таблиц Excel с помощью Cucumber Scenario Outline

Я пытаюсь увидеть, если это возможно, более элегантный способ обработки вызовов номеров nTh из схемы сценария огурца, который соответствует строке таблицы Excel (nth).

В настоящее время я использую номера итераций для определения строки № таблицы Excel, из которой нужно извлечь данные. Я хотел посмотреть, возможно ли использовать огурец с Excel более элегантным способом, чем приведенный ниже пример со схемой сценария.

Немного предыстории:

  • У каждой итерации должен быть свой сценарий. Поэтому я не использую простой цикл for с row.count.
  • Я полностью осведомлен о набросках сценария как о способе составления таблиц данных, но моя компания хочет видеть POF, чтобы мы могли интегрировать большие наборы данных с помощью Excel.
  • Текущая настройка работает для небольших наборов данных, но когда мы попадаем в большие таблицы Excel, я не хочу набирать n-е числа на схеме

Огуречный код:

Feature: User is using an excel spreadsheet with cucumber driving it

  Scenario Outline: Data Driven with excel and data sets

   When I am on the amps mainscreen
    Then I input username and passwords with excel row"<row_index>" dataset

    Examples:
    | row_index  |
    | 1          |
    | 2          |
    | 3          |
    | 4          |

Шаг файла:

//Excel Steps
@When("^I am on the amps mainscreen$")
public void i_am_on_the_amps_mainscreen()  {
    System.out.println("Im loading");
}
//Excel Steps
@Then("^I input username and passwords with excel row\"([^\"]*)\" dataset$")
public void i_input_username_and_passwords_with_excel_row_dataset(int rownum)    throws IOException {
    login.readExcel(rownum);
}

Актуальный код:

 public void readExcel (int row) throws IOException{

    File src=new File("src/test/resources/username.xlsx");
    FileInputStream fis=new FileInputStream(src);
    XSSFWorkbook srcBook= new XSSFWorkbook(fis);
    XSSFSheet sourceSheet = srcBook.getSheetAt(0);

    XSSFRow sourceRow = sourceSheet.getRow(row);
    XSSFCell username=sourceRow.getCell(0);
    XSSFCell password=sourceRow.getCell(1);
    String userExcel = username.getStringCellValue();
    String pwExcel = password.getStringCellValue();
    System.out.println("The username is" +userExcel);
    System.out.println("The password is" +pwExcel);
    log.info("The username on " +row + " is: "+userExcel);
    log.info("The password on "+row+ " is: "+pwExcel);
    driver.findElement(txtbox_username).sendKeys(userExcel);
    driver.findElement(txtbox_password).sendKeys(pwExcel);
    driver.findElement(btn_logon).click();

}

1 ответ

Решение

Вы можете использовать QMetry Automation Framework с фабрикой корнишонов. Он поддерживает тестовые данные, предоставленные вне файла объектов, например, Excel, XML, JSON, CSV или базы данных. Вы можете предоставить файл данных для примеров, таких как:

Примеры:{'Файл данных':'ресурсы /testdata.xls'}

Вот пример, который вы можете проверить.

Другие вопросы по тегам