故事中是否既有成功也有失败结果?
Lifecycle:
After:
Outcome: FAILURE
Given I capture page screenshot
Given I close browser
Outcome: SUCCESS
Given I close browser
Scenario: Sample one
Given I open browser
When I do something
Scenario: Sample two
Given I open browser
When I do another thing
例如,对于失败,我想在关闭浏览器之前进行截图。如果成功,我只想关闭浏览器。
我知道我可以在所有方案结束时关闭浏览器,并且仅保留失败结果。我想知道在Lifecycle After中是否有办法做到这一点。 谢谢。
答案 0 :(得分:0)
引用OP:
例如,对于失败,我想在关闭浏览器之前进行截图。如果成功,我只想关闭浏览器。
现在,有趣的问题将是您使用哪个框架进行断言? 我假设您使用的是与JBehave捆绑在一起的Junit,因为JBehave依赖于JUnit引发的异常会导致错误。
该想法是: a)发生错误时引发异常(因此需要检查每一步) b)截屏 c)继续测试(即关闭浏览器)
因此,要抛出异常,您实际上不需要做很多事情,因为使用JUnit的Assert语句时,这是自动完成的。
例如
import Vue, {CreateElement, RenderContext} from "vue";
export default Vue.extend({
name: "SomeComponent",
functional: true,
render(h: CreateElement, {children, data}: RenderContext) {
const doStuff = () => console.log("Hello there!");
return (
<router-link
{...data}
nativeOnClick={doStuff}
>
{children}
</router-link>
);
}
});
如果以上操作失败,则将引发异常。 您可以这样捕获它:
Assert(username.equals("expected_user").isTrue();
从此答案中得出: JUnit5 - How to get test result in AfterTestExecutionCallback
因此,基本上,在执行每个断言之后,您将覆盖标准行为。在上述情况下,您可以添加(抛出异常时->截屏)。
以下是Selenium-Java的屏幕截图代码:
public class RunnerExtension implements AfterTestExecutionCallback {
@Override
public void afterTestExecution(ExtensionContext context) throws Exception {
Boolean testResult = context.getExecutionException().isPresent();
System.out.println(testResult); //false - SUCCESS, true - FAILED
}
}
@ExtendWith(RunnerExtension.class)
public abstract class Tests {
}
希望以上帮助!