使用 Cucumber Scenario Outline 处理 excel 电子表格

Posted

技术标签:

【中文标题】使用 Cucumber Scenario Outline 处理 excel 电子表格【英文标题】:Handling excel spreadsheets with Cucumber Scenario Outline 【发布时间】:2016-12-15 15:07:43 【问题描述】:

如果可能的话,我试图找到一种更优雅的方式来处理从与 Excel 电子表格行(第 n 个)相关的 Cucumber Scenario Outline 调用 nTh 数字。

目前我正在使用迭代编号来定义 Excel 电子表格的行号以从中提取数据。我想看看是否有可能以比下面带有场景大纲的示例更优雅的方式将 cucumber 与 excel 一起使用。

一些背景:

每次迭代都需要有自己的场景。因此,为什么我不使用 带有 row.count 的简单 for 循环。 我完全意识到方案大纲是一种制作数据表的方式,但我的公司希望看到一个 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 与gherkin factory 一起使用。它支持在特征文件之外提供的测试数据,例如 excel、xml、json、csv 或数据库。您可以提供数据文件,例如:

示例:'datafile':'resources/testdata.xls'

这是您可以查看的example。

【讨论】:

以上是关于使用 Cucumber Scenario Outline 处理 excel 电子表格的主要内容,如果未能解决你的问题,请参考以下文章

Cucumber Scenario Outline 上的示例表上是不是可以有空值? [复制]

如何使用 Java 在运行时获取当前 Cucumber 功能文件名

Ruby Cucumber多行引号与插值?

Cucumber 之Gherkin

Cucumber语法格式

Cucumber, capybara and selenium - 无需按钮即可提交表单