@Before方法将在每个场景之前运行。在所有场景执行完毕后,我们是否有一个注释在任何一个场景和一个注释之前运行?
答案 0 :(得分:1)
正如评论中指出的那样,黄瓜没有开箱即用的解决方案。
但是你可以创建一个只使用静态标志运行一次的前钩子。
private static boolean skipFlag = false;
@Before
public void beforeHook() {
if(!skipFlag) {
do stuff
skipFlag=true;
}
}
修改Before
挂钩以运行某些标签等。
最后运行的后挂钩很难。要么专门创建一个场景,要么最后一步完成所有挂钩的东西。或者您可以在JVM shutdown hook中编写代码,但它将在所有功能文件运行后运行。
答案 1 :(得分:1)
您可以使用gerkin with qaf来使用不同的TestNG侦听器和注释。除此之外,如果您使用的是webdriver,则可以获得额外的driver and element listeners支持。例如
package my.test.pkg
public class MyClass{
@BeforeSuite
public void beforeSuite() {
//get executed before suite
}
@BeforeTest
public void beforeTest() {
//get executed before each xml test
}
@BeforeMethod
public void beforeMethod() {
//get executed before each test case/scenario
}
@BeforeGroups(["p1","p2"])
public void beforeMethod() {
//get executed before group
}
//same for after methods @afterXXXXX
}
您需要在配置文件中添加类:
<test name="Gherkin-QAF-Test">
<classes>
<class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
<class name="my.test.pkg.Myclass" />
</classes>
</test>
此示例未使用侦听器。您还可以使用不同的侦听器。