如何解决如果没有Assert.Assume..,则可以跳过/忽略Cucumber测试用例
我有一个带有多个测试用例的Cucumber .feature 文件(使用“示例”)。
在某些情况下,我想跳过一些测试用例,只运行其中的几个。
注意:
用户应该能够选择要动态
跳过的测试用例
例如,他可以在第一次运行中决定跳过测试用例1,而下次决定跳过第2例。
Examples:
| SERIAL_NO | ID |
| 1 | Create-Customer A |
| 2 | Create-Customer B |
| 3 | Create-Customer C |
我设法使用
Assume.assumeTrue(...)
唯一的问题是-代码抛出异常,我希望使日志保持清晰。
有什么选择可以避免打印异常,而只是忽略测试用例? 或通过其他解决方案跳过它?
谢谢
解决方法
对于要跳过测试并使用@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
场景,请不要使用标记
最后,通过使用我提到的 Assert.assume(...)相同的方法,我找到了一个简单的解决方案,只需要清除异常堆栈跟踪,然后将其重新抛出即可。 / p>
在下面的代码中,您可以看到实际的变化只是我添加了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:得到:
,预期:是
这对我来说已经足够了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。