1

我正在尝试在 "Scenario Outline" 下的 "Examples" 中处理当前行数。如何在步骤定义中获取当前行数?我不想在示例中传递数字。有什么办法吗?

Scenario Outline:
    When the name is entered as "<fruit>" <days>

Examples:
    |fruit|days|
    |Apple|10|
    |Orange|12|
    |Guava|3|
    ...

在步骤定义中,我希望将行处理为 1,2,3,...(代替 XXXXX)。

@When("^the name is entered as \"([^\"]*)\" ([^\"]*)$")
public void the_name_is_entered_as(String fruitName, int days) throws Throwable {
    System.out.println("Current Row processsed is: "+XXXXXXX)
}
4

2 回答 2

0
private Scenario scenario;

@Before
public void before(Scenario sce) {
    this.scenario = sce;
    System.out.println("SCENARIO ID -- " +scenario.getId());
}

您将得到一个类似于场景大纲 - 特征描述的字符串;场景大纲描述;示例描述;行号 + 1。

对于一个简单的场景,您将获得 - feature-description ;场景描述。

对于场景大纲案例,您可以使用分隔符“;”进行拆分 并在减去 1 后使用最后一部分。

这有点像 hack,它取决于此模式中剩余的场景 id 字符串。

于 2016-08-30T08:25:28.140 回答
0

我能想到的最好的方法(这不是很漂亮)是自己计算幕后的行数:

private static int rowIndex = 0;

@When("^I enter the name as \"([^\"]+)\"$")
public void i_enter_the_name_as(String fruit) {
    rowIndex++;
    // now you can use it in this and subsequent steps
}

这仅在“我输入名称为”仅在单个场景大纲中使用时才有效。如果您想在多个场景中使用它,那么我能想到的最好的事情就是在不同的场景中重置计数器。

于 2016-08-30T01:06:09.697 回答