1

@Before 方法将在每个场景之前运行。我们是否有在任何场景之前运行的注释和在所有场景执行后的注释?

4

2 回答 2

1

正如评论中指出的那样,黄瓜对此没有开箱即用的解决方案。

但是您可以创建一个 before 挂钩,仅使用静态标志运行一次。

private static boolean skipFlag = false;

@Before
public void beforeHook() {

    if(!skipFlag) {
        do stuff
        skipFlag=true;
    }
}

修改Before钩子以针对某些标签等运行。

在最后运行的后钩是困难的。要么专门创建一个场景,要么在最后做一个最后一步,在这个步骤中完成所有后钩子的事情。或者您可以在JVM 关闭挂钩中编写代码,尽管它会在所有功能文件运行后运行。

于 2018-04-14T05:07:42.473 回答
1

您可以将gerkin 与 qaf 一起使用,您可以在其中使用不同的 TestNG 侦听器和注释。除此之外,如果您使用 webdriver,您可以获得额外的驱动程序和元素侦听器支持。例如

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>

此示例未使用侦听器。您还可以使用不同的侦听器。

于 2018-04-14T18:54:30.623 回答