java - Cucumber 场景按顺序运行

标签 java cucumber cucumber-jvm cucumber-junit

我对 cucumber 框架没什么担忧:- 1.我有一个功能文件(步骤相互依赖),我想按顺序运行所有场景,默认情况下它们按随机顺序运行。 2. 如何多次运行单个特征文件?

我放置了一些标签并尝试运行,但没有成功。

@Given("Get abc Token")
    public void get_abc_Token(io.cucumber.datatable.DataTable dataTable) throws URISyntaxException {
        DataTable data=dataTable.transpose();
        String tkn= given()
                .formParam("parm1",data.column(0).get(1))
                .formParam("parm2", data.column(1).get(1))
                .formParam("parm3", data.column(2).get(1))      
        .when()
        .post(new URI(testurl)+"/abcapi")
        .asString();

        jp=new JsonPath(tkn);

        Token=jp.getString("access_token");

        if (Token==null) {
            Assert.assertTrue(false,"Token is NULL");           
        }else {


        }       

       }


@Given("Get above token")
    public void get_abovetoken(io.cucumber.datatable.DataTable dataTable) throws URISyntaxException {

    System.out.println("Token is " +Token);



    }
}

因此,在上述步骤中,我从一个步骤获取 token ,并尝试在其他步骤中打印 token ,但我得到的是 null 而不是实际值,因为我的步骤是随机的 请注意,我正在通过 testng.xml 文件运行 TestRunner。

最佳答案

Cucumber 和测试工具通常旨在将每个测试/场景作为完全独立的事物运行。将场景链接在一起是一种可怕的反模式,不要这样做。

相反,要学会正确地编写场景。场景和功能文件中不应包含任何编程。编程需要下推到步骤定义中。

任何场景,无论多么复杂,只要你愿意,都可以通过 3 个步骤来编写。您的 Given 可以设置任意数量的状态。您的 When 处理您正在做的事情,您的 Then 可以检查任意数量的条件。

您可以通过将所有细节从场景中推送到步骤定义中来完成此操作。您可以通过让步骤定义调用完成所有工作的辅助方法来进一步改进这一点。

关于java - Cucumber 场景按顺序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273261/

相关文章:

ruby - 如何避免 Errno::ECONNREFUSED: (连接被拒绝 - connect(2)

java - cucumber -JVM : Call a Scenario or ScenarioOutline inside a step definition

javascript - 如何设置从对 .js 或 json 文件的响应中收到的值

java - 在 Maven 中设置 cucumber-jvm 格式选项以附加所有测试执行结果

java - 了解负数上的 java BigInteger.bitCount 方法

java - Sharepoint Web 服务 Java - 无数据

java - 菜单大小与父级 SplitMenuButton javaFX 相同

java - 为什么EJB为null?

java - Cucumber-为什么我的步骤定义没有被识别

java - 如何并行执行 cucumber 功能文件