【问题标题】:how to achieve nested loop in cucumber framework?如何在黄瓜框架中实现嵌套循环?
【发布时间】:2022-01-18 08:40:52
【问题描述】:

我有一个场景,我必须验证 30 个链接,每个链接有 24 个值。所以我必须点击 30 个链接中的每个链接,然后验证该链接中的 24 个值。如何在黄瓜框架中实现这一点? 在普通的 java 方法中,我们可以使用 2 个循环,在外部循环中将输入 30 个链接的列表,然后在内部循环中将输入 24 个值的列表。 如何在黄瓜框架中实现嵌套循环? 提前致谢

30 Links 24 Values

【问题讨论】:

  • 黄瓜框架中如何实现嵌套循环? --> Cucumber 是一个基于 BDD 框架的工具,使用 cucumber 写法没有什么不同。如果您使用的是 Java 绑定,那么您可以使用您在问题中提到的相同方法(两个循环)。
  • 但是黄瓜里有数据表的概念对吧?我们不能在这种情况下使用它吗??

标签: selenium bdd cucumber-java automation-testing


【解决方案1】:

假设你有这样的功能文件

Feature: URLs and values

  Scenario: Validating URLs
    Given the following URL list:
      |http://my.url/1|
      |http://my.url/2|
      |http://my.url/3|
      |http://my.url/4|
    Then values are correspondingly equal to:
      |val 11|val 12|val 13|
      |val 21|val 22||
      |val 31|||
      |val 41|val 42|val 43|

那么首先你需要在你的项目中添加Picocontainer依赖:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>

注意 - 版本必须与您的黄瓜版本匹配

然后你像这样实现你的步骤定义:

package click.webelement.cucumber;

import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import java.util.ArrayList;
import java.util.List;

public class DataTablesStepDef {

    ArrayList<String> urls;

    public DataTablesStepDef(ArrayList<String> urls){
        this.urls = urls;
    }

    @Given("the following URL list:")
    public void urlList(List<String> urls){
        this.urls.addAll(urls);
    }

    @Then("values are correspondingly equal to:")
    public void validateValues(List<List<String>> values){
        for(int i = 0; i < urls.size(); i++){
            for(int j = 0; j < values.get(i).size(); j++){
                String value = values.get(i).get(j);
                if(value != null){
                    System.out.println("Validating value["
                            +  value
                            + "] for url: " + urls.get(i));
                }
            }
        }
    }

}

现在让我们看看输出:

Validating value[val 11] for url: http://my.url/1
Validating value[val 12] for url: http://my.url/1
Validating value[val 13] for url: http://my.url/1
Validating value[val 21] for url: http://my.url/2
Validating value[val 22] for url: http://my.url/2
Validating value[val 31] for url: http://my.url/3
Validating value[val 41] for url: http://my.url/4
Validating value[val 42] for url: http://my.url/4
Validating value[val 43] for url: http://my.url/4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2016-10-14
    • 2021-09-27
    • 2014-01-10
    • 1970-01-01
    • 2018-06-27
    • 2021-12-22
    • 2018-11-03
    相关资源
    最近更新 更多