如何在不使用钩子的情况下获取黄瓜场景名称?

How can I get cucumber scenario name without using hooks?

我想为每个场景获取一个场景名称以将其设置为测试名称,而 运行 它在 saucelabs 上。可以在创建 webdriver 之前使用 MutableCapabilities 设置此测试名称。我正在使用 google Guice @ScenarioScoped 创建驱动程序,因此甚至会在调用 @Before 挂钩方法之前创建驱动程序。那么,有什么方法可以在不使用 @Before 钩子的情况下访问场景名称?

Cucumber 实现不允许您在不使用 @Before 钩子的情况下访问场景名称

用 testng 创建 cucumber runner class。在 run_cukes 方法中将使用方法 cucumberFeature.getCucumberFeature().getGherkinFeature().getName()

获取当前特征文件和场景名称

根据 Cucumber 实现,如果不使用 @Before 或 @After 挂钩,则无法获取场景名称。 但是,以下应该适用于您的问题: 您可以利用订购挂钩的优势。这些挂钩将根据指定的顺序执行。供参考:https://cucumber.io/docs/cucumber/api/ 示例:

@Before(order = 10)
public void doSomething(){
    // Do something before each scenario
}

所以,你可以在创建webdriver的class处再添加一个低阶@Before hook,这个方法需要放在webdriver创建之前。