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

有没有办法在满足特定条件时停止Cucumber中的场景执行?

景成和
2023-03-14

目前在我们的自动化框架中,我们需要有一种能力来控制cucumber中场景步骤的执行。

问题详情:

假设我们有以下步骤作为场景的一部分:

  1. 检查订单是否存在
  2. 创建订单

我想实现的是在步骤1中进行检查,如果系统中存在订单(通过DB Call),只需跳过整个场景并将其标记为通过/跳过。如果已经有一些符合标准,我们不想下订单。

目前我通过放置一个Assert.false()来处理它,如果我从DB获取Id,它会失败断言说ID已经存在。

但这将测试描述为失败,这从报告角度来看是不正确的。是否有一种方法可以将此场景的测试标记为通过/跳过,并在系统中存在订单时停止执行。

不幸的是,我找不到像Assert.pass()这样的东西,通过它我可以退出场景并将其标记为通过。

我在Maven项目中使用Javacucumber。任何线索或现有的留档都会有所帮助。

共有2个答案

高兴贤
2023-03-14

不确定您使用的是什么测试运行程序,但是在junit5中,我只是使用如下的< code>Assumptions类

 import org.junit.jupiter.api.Assumptions;

 ....

@Given("an employee record is created with values")

    public void create_employee_record(){

       // i'll just pass false as the parameter but it could be any method that retuns false

        Assumptions.assumeTrue((false));
      ...
     //more code here
      
}

上述方案在验证 Assumptions.assumedTrue((false)) 后不会执行,并且执行将继续到下一个方案。在报告中,这将被标记为中止,其他方案标记为已通过

郑宜民
2023-03-14

因此,如果您抛出cucumber待定异常,测试将中止。

在ruby中还有一个非常简洁的skip_this_scenarioWorldable方法。它为您执行此操作并将其标记为跳过。

对于Java抛出挂起异常,只需使用抛出新的PendingException();我不确定那里是否存在跳过场景逻辑。但是如果你搜索代码库,你可能会找到它。我已经向核心维护者询问了松弛,如果你想了解更多,请随时加入松弛组cucumberBDD。或者文档站点(docs.cucumber.io)

卢克-cucumber红宝石维护者

编辑:https://github.com/cucumber/cucumber-jvm/tree/main/testng#skipexception-对于如何跳过执行中期测试

 类似资料:
  • 有没有办法让我有条件地跳过Cucumber java中的场景? 在下面的图片中,当新闻发布部分没有可用数据时,我想跳过为数据检查编写的场景。 我计划首先检查没有可用数据的场景,如果它成功执行,然后跳过其余的场景。 添加功能文件以获得更多理解: 背景:给定主页显示当我导航到“XYZ”菜单时,应显示“新闻稿”部分 在上述文件中,如果@News 和“新闻稿”部分是否应该检查无数据存在 返回肯定的结果,然

  • 我有一个项目,我的方法得到两个日期,它不断地向方法添加一天,直到两个日期相等,然后您可以通过查看一天添加了多少次来查看日期相距有多远。我的问题是,当满足日条件时,即使日、月和年必须都相同才能停止工作,我的while循环也会退出

  • jhbhhjhj当我点击登录并输入有效的“kumar.rakesh@yopmail.com”和有效的“admin@123”,然后点击登录,用户应该可以成功登录 测试转轮

  • 使用Cucumber,我们创建了由不同场景组成的不同功能文件。我们记住的一件事是,每个场景都独立于所有其他场景。 问:我们可以对所有的特征文件或场景进行并行执行吗?

  • 问题内容: 我的PC上没有太多内存,处理器也很弱。尽管到目前为止,netbeans是我最喜欢的IDE,但在我现有的计算机上使用它几乎是难以忍受的,因为打开程序时,项目扫描会自动开始。 有没有办法防止Netbeans扫描项目? 问题答案: 嗨,乔治,我不知道这是否是答案,但是我右键单击并在不需要打开的项目上选择“关闭”。将您过去的所有项目都列出在那里是没有意义的。只需将您正在开发的那个打开。您始终可