【问题标题】:It is possible to skip / ignore Cucumber test case without Assert.Assume(..)可以在没有 Assert.Assume(..) 的情况下跳过/忽略 Cucumber 测试用例
【发布时间】:2020-12-24 23:05:59
【问题描述】:

我有包含多个测试用例的 Cucumber .feature 文件(使用“示例”)。
在某些情况下,我想跳过几个测试用例,只运行其中的几个。

注意: 用户应该能够选择动态地
跳过哪个测试用例 例如,他可以决定在第一次运行时跳过 1 号测试用例,下一次跳过 2 号。

Examples:
  | SERIAL_NO | ID                |
  | 1         | Create-Customer A |
  | 2         | Create-Customer B |
  | 3         | Create-Customer C |

我设法做到了

Assume.assumeTrue(...)

唯一的问题是 - 代码抛出异常,我希望保持日志清晰

有什么选项可以避免打印异常,而忽略测试用例? 还是通过其他解决方案跳过它?

谢谢

【问题讨论】:

  • 您可以使用黄瓜标签(例如@ignore)并在测试运行器类中将其作为“~@ignore”在标签下传递。所以这将执行除了@ignore标签之外的所有场景。
  • @DilipMeghwal, \@Ignore 标签将有助于跳过整个场景,不是吗?我说的是跳过场景 .feature 文件中的特定测试用例(在示例下),以及是否跳过的决定是在运行时(由用户选择),我不能只是不断地跳过测试用例。
  • 您正在寻找的内容可通过qaf获得
  • @user861594,这似乎对不断选择要跳过的测试用例很有好处,但正如我所提到的,我需要它是动态的,每次我可以通过用户选择跳过不同的测试用例跨度>
  • @Adir D,您也可以在运行时指定测试数据过滤器参考this post,该值也可以use expression

标签: java junit automation cucumber


【解决方案1】:

我会将您的示例拆分为您希望跳过测试并使用@todo 标记的每个场景,如下所示:

   Scenario Outline: [test-scenario-001] Send a new form with request type  
   Given I preload the from using "request"
   And I select the 'Submit' button
   Then the response message "hello" is returned
   Examples:
    | request |
    | POST    |
   @todo
   Examples:
    | request | 
    | GET     |
    | PUT     |
    | DELETE  |

然后只为第一个Example 运行场景,调用不作为功能的一部分运行的标签:

-Dcucumber.options="--tags ~@todo"

要运行所有Example 方案,请不要使用标记

【讨论】:

  • 我编辑了我的问题,可能还不够清楚。我需要能够动态地跳过测试用例,每次不同的测试用例,通过您的解决方案,只有每次都应该跳过相同的测试用例(如果需要)。
  • 工作正常。为此目的求助于诸如标签之类的通用分组机制(在这种情况下为否定标签:〜)是很奇怪的,并且没有用于跳过事物的标准语法。顺便说一句,我将标签命名为 @skip 以更好地解释它的作用并更通用。
【解决方案2】:

最后我找到了一个简单的解决方案,使用我提到的相同方法Assert.assume(...),只需要清除异常堆栈跟踪,然后重新抛出即可。

在下面的代码中你可以看到实际的变化只是我添加了 catch 块:

try
{
    Assume.assumeTrue("Some Condition...");
}
catch (AssumptionViolatedException e)
{
    // clearing stack trace, so it will keep logs clear, just print the name of exception
    e.setStackTrace(new StackTraceElement[] {});
    throw e;
}

现在异常堆栈跟踪不会打印到日志中,所以日志保持干净,我只是看到这个:

org.junit.AssumptionViolatedException:得到:,预期:是

这对我来说已经足够了。

【讨论】:

  • 您正在寻找的内容可以通过qaf获得
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2017-01-26
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多