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

cucumber挂钩在所有功能场景结束后执行

白信鸿
2023-03-14

我尝试在cucumber中执行特性后执行一个脚本来清理数据库。我使用前后挂钩的方式如下:

    private static boolean skipActions = false;
    @Before("@initData")
    public void setupData() throws Exception {
     if (!skipActions) {
         initData();
         skipActions = true;
      }
    }

对于before,我可以避免使用静态变量在每个场景之前调用脚本。但不知道如何为后钩子做:

  @After("@clearData")
   public void tearDown() throws Exception {
      clearData();
  }

有没有办法捕获最后一个方案是否已经执行,并且仅在满足该条件时才触发 clearData()?有没有更优雅的方法?

共有1个答案

楚苏燕
2023-03-14

所以在ruby中有一个at_exit钩子。但这不是cucumber,它在程序上是相关的。我会深入你的语言,看看这是否可能。

如果做不到这一点,您可以在运行失败次数期间存储一个类变量。然后如果所有这些都通过了,那么您可以做些什么。

解决这个问题的另一种方法是用jenkins这样的东西来包装执行工作,jenkins有很好的简单的开箱即用的方法来清理东西。

在Jenkinsfile的声明性和脚本化管道中,允许调用<code>cleanWs()

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

  • 我不确定如何在cucumber-JVM中实现它。有线索吗?

  • 现在我正试图从当前场景中获取信息(描述、文件路径、名称等)。我试着像这样在before hook中获取场景信息 然而,像scenario.description这样的东西不能使用。这是因为当在之前和之后钩子中运行时,场景被称为,而不是核心AST模块的一部分,如功能。我希望能够从和访问场景,其中像当前场景描述这样的值是可用的。是否可以访问中的前后钩子,而不是,或者另一种方式来获取信息,如场景名称,描

  • 对于多个场景,我想在每个cucumber功能文件中只执行一次后台。如何在step文件中执行此操作? 功能:用户可以验证。。。。。。。。。。。 背景:给定输入特定逻辑的测试数据 场景:验证。。。。。。。。。1当A1和B1然后C1时 场景:验证.........2当A2和B2然后C2 场景:验证。。。。。。。。。2当A3和B3然后C3时

  • 我在为孩子们做一个教育游戏。。但我在场景结束时停了下来,我无法编写代码来开始新场景。。在第一个脚本中,当玩游戏时,场景直到最后一个场景才停止。 我搜索了很多,没有找到我的问题,所以我咨询了你。使用按钮转到下一个场景更容易,但我更喜欢自动执行。我认为这项任务可以通过布尔值来完成,但它需要引用游戏对象。。和两幅图像上的脚本。第一个脚本(管理器)在画布上放置了四个图像。。我放在空游戏对象上的第二个(Yo