当前位置: 首页 > 知识库问答 >
问题:

示例标记中的cucumber挂钩

郑声
2023-03-14

如何在hook前读cucumber中例子的标签名?

@feature_tag功能:功能描述

@outline_tag场景大纲:给定场景细节的大纲描述

@example_tag
Examples:
  |num_1  | num_2  | result |
  | 1        |   1       |   2     |

我想在输出中打印“@example_tag”。

使用java代码作为

@Before
public void beforeScenario (ScenarioOutline ScenarioOutline) {
     examples = (Examples) ScenarioOutline.getExamples(); 
     for(Tag tag : examples.getTags()){
       System.out.println("Example Tags: " + tag.getName());
    }
}

但是得到错误作为

"在钩子之前失败:step definitions . before scenario(scenario outline)消息:cucumber . runtime . cucumber异常:当钩子声明一个参数时,它必须是cucumber . API . scenario . public void step definitions . before scenario(gherkin . ast . scenario outline)类型"

感谢您的回复,但此代码正在打印“@outline_tag”而不是“@example_tag”。这是我的问题。我希望打印“@example_tag”。

@feature_tag 
Feature: Feature description

@outline_tag 
Scenario Outline: Outline description Given scenario details

@example_tag
Examples:
  |num_1  | num_2  | result |
  | 1     |   1    |   2    |

共有1个答案

邹山
2023-03-14

“Before”块不会在场景大纲之前运行。它在场景之前运行。场景大纲分为多个场景,这意味着您只需要获取生成的场景:

@Before
public void beforeScenario(Scenario scenario) {
    for(String tag : scenario.getSourceTagNames()){
        System.out.println("Example Tags: " + tag);
    }
}

场景大纲中的每个场景在运行之前都会命中它。

@stuff @stuff1
Feature: Stuff

Scenario Outline: More stuff
  When some step

  @somegabage
  Examples:
    | provider |
    | 123      |
    | 123567   | 

输出:

Example Tags: @stuff
Example Tags: @stuff1
Example Tags: @stuff2
Example Tags: @somegabageExample Tags: @stuff
Example Tags: @stuff1
Example Tags: @stuff2
Example Tags: @somegabage
 类似资料:
  • 7.14. 示例: 基于标记的XML解码 第4.5章节展示了如何使用encoding/json包中的Marshal和Unmarshal函数来将JSON文档转换成Go语言的数据结构。encoding/xml包提供了一个相似的API。当我们想构造一个文档树的表示时使用encoding/xml包会很方便,但是对于很多程序并不是必须的。encoding/xml包也提供了一个更低层的基于标记的API用于XM

  • 大家好,如果有人能帮忙的话——我正在尝试使用Cucumber标签运行一个特定的场景——这是我用来运行用Webdriver-Cucumber框架构建的测试的表达式- npx wdio运行wdio。conf.js——cucumber。tagExpression='@Tag 当我使用上面的命令时,什么也不会发生——我已经在功能级别定义了标记-“@tag”——所以我希望功能文件中的所有场景都会得到执行,但

  • 问题内容: 我试图确保我的Java应用程序采取合理的步骤来增强功能,并且其中的一部分涉及正常关闭。我正在阅读有关关机挂钩的信息,但实际上并没有实际使用它们的方法。 有没有实际的例子? 假设我有一个非常简单的应用程序,例如下面的程序,它以100为批号将数字写入文件,将10写入行,并且如果程序被中断,我想确保给定的批处理完成。我知道如何注册一个关闭钩子,但是我不知道如何将其集成到我的应用程序中。有什么

  • 问题内容: 在准备涉及图像的MCVE / SSCCE时,直接访问图像很有用。 可以解决大多数问题的图像类型包括-具有多种颜色或形状的小图像,具有/不具有透明度的动画GIF,作为图像“成对”的JPEG,可用于图像过渡,平铺集,精灵表中。 对于这些类型的示例,我们是否可以热链接到任何小的(小于30KB)的现场许可和免版税图片? 问题答案: 这是一些常用的示例图像,主要来自SO上的现有答案。 图示 使用

  • 我正在将Serenity-BDD与cucumber一起使用,并且我想在每个功能文件上只运行一次某些内容。看起来cucumber目前不支持这一点。我想知道宁静是否有一些解决方法。 我还尝试在测试套件类中使用JUnit @BeforeClass,@AfterClass挂钩,但是这两个注释需要静态方法,我当时无法访问serenity page objects方法(当时没有注入实例)。