junit 从excel工作表中获取标签并尝试在cucumber框架中的cucumber选项中传递相同的标签

5ssjco0h  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(174)

我试图获取所需的标签,并在 cucumber 框架中的 cucumber 选项中传递它,其中标签存储在Excel工作表中。我完成了编码,从Excel中获取所需的标签(ExcelReader类)。但无法在Runner类中传递相同的标签在 cucumber 选项中。你能帮我吗?[ enter image description here ](https://i.stack.imgur.com/OHkNR.jpg
我没有得到一个适当的解决方案来传递 cucumber 选项中的变量“tag”,以便我可以用Excel工作表中的标签触发相同的相应测试用例。

gwo2fgha

gwo2fgha1#

您不能直接将标记传递给runner类。当您运行junitrunner类时,在执行任何代码之前,它会加载所有cucumber.options,因此无法在runner类中参数化tags。您可以从命令行传递标记,请参考此solution
或者,您可以使用junit.runner.JUnitCore来执行junit类。

Step#1:你需要有一个main方法来执行代码作为java程序而不是junit测试。

import org.junit.internal.TextListener;
import org.junit.runner.JUnitCore;

public class Main {
    public static void main(String[] args) {
        System.setProperty("cucumber.options", "--tags @Login"); //You can use the tag what you are reading from excel here.
        JUnitCore junit = new JUnitCore();
        junit.addListener(new TextListener(System.out));
        junit.run(Runner.class);
    }
}

Step#2:从Runner类中删除tags选项。

@RunWith(Cucumber.class)
@CucumberOptions(features = "src\\test\\resources\\Features", glue = { "code" })
public class Runner {

}

Step#3:运行main方法。
功能文件

Feature: Application

  @Login
  Scenario: Login
    Given Login to the application

  @Logout
  Scenario: Login
    Given Logout from the application

步骤定义

public class StepDefs {

    @Given("^Login to the application$")
    public void login() {
        System.out.println("Logged into the application");
    }

    @Given("^Logout from the application$")
    public void logout() {
        System.out.println("Logged out from the application");
    }
}

输出

Logged into the application

1 Scenarios ([32m1 passed[0m)
1 Steps ([32m1 passed[0m)
0m0.477s

相关问题