当前位置: 首页 > 知识库问答 >
问题:

cucumber标签作为 QAF 和Spring启动环境中的测试NG 组

宗政权
2023-03-14

我在一个功能文件中有4个测试,@first和@then有2个不同的标签。我希望@first测试首先以并行性运行,@then测试在所有@first测试完成后运行,并行性也是如此。

这个项目在这里:https://github.com/marcesso/qafTesting

@CucumberOptions(plugin = {"com.qmetry.qaf.automation.cucumber.QAFCucumberPlugin", "pretty", "html:target"},
        /*tags = {"@Ignore"},*/
        features = {"src/test/resources/my/custom/packagename/testing"})
public class RunnerTest extends AbstractTestNGCucumberTests {

    @Autowired
    private ObjectMapper objectMapper;


    @Test(description = "Runs Cucumber Scenarios", dataProvider = "scenarios", groups = {"first"})
    public void runScenarioFirst(PickleWrapper pickleWrapper, FeatureWrapper featureWrapper) throws Throwable {
        super.runScenario(pickleWrapper,featureWrapper);

    }
    @Test(description = "Runs Cucumber Scenarios", dataProvider = "scenarios", groups = {"then"}, dependsOnMethods =
            "runScenarioFirst")
    public void runScenarioThen(PickleWrapper pickleWrapper, FeatureWrapper featureWrapper) throws Throwable {
        super.runScenario(pickleWrapper,featureWrapper);
    }

    @Override
    @DataProvider(name = "scenarios", parallel = true)
    public Object[][] scenarios() {
        return super.scenarios();
    }

    @PostConstruct
    public void setUp() {
        objectMapper.registerModule(new JavaTimeModule());
    }

}

问题是所有测试都运行两次(每个测试方法运行一次),@test注释的“groups”属性没有像我预期的那样过滤测试(非常底层https://qmetry.github.io/qaf/latest/gherkin_client.html)

也完全没有可比性。

我尝试在测试方法中过滤泡菜,但不符合条件的测试即使未运行也显示为通过。

if(pickleWrapper.getPickle().getTags().contains("@first")) {
            super.runScenario(pickleWrapper,featureWrapper);
}

共有1个答案

叶阳
2023-03-14

在上面的RunnerTest示例中,来自qaf的GherkinClient没有出现在图片中,因为您正在使用cucumber运行程序。GherkinScenarioFactoryBDDTestFactory2(带有qaf 2.1.15)是QAF的GherkinClient实现。当您使用其中任何一个时,您不需要上面的RunnerTest类。BDDTestFactory2GherkinScenarioFactory更受欢迎,并且它支持标准gherkin语法之上的附加语法功能。

当您使用cucumber runner(在您的例子中是< code>RunnerTest类)时,标签不被认为是TestNG组。如果你想使用cucumber runner来运行特征文件,你需要使用cucumber options来处理它。阿发克,你要找的东西,在使用cucumber跑垒员的时候,单个类是达不到的。

当你使用qaf时,你可以使用BDD2Factory代替cucumber测试类。您可以提供xml配置,将场景视为测试用例。您可以混合和匹配TestNG支持的不同配置选项,就像执行用java编写的测试一样。在您的情况下,它可能如下所示:

<suite name="QAF Demo" verbose="0" parallel="false" data-provider-thread-count="10">

<test name="First"  parallel="methods"  thread-count="5">
   <groups>
      <run>
        <include name="first" />
      </run>
   </groups>
   <classes>
      <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
   </classes>
</test>

<test name="second"  parallel="methods"  thread-count="5">
   <groups>
      <run>
        <include name="then" />
      </run>
   </groups>
   <classes>
      <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
   </classes>
</test>
</suite>

您还可以利用元数据过滤。qaf还将组/标签视为测试用例的元数据。所以与其说:

<groups>
  <run>
    <include name="first" />
  </run>
</groups>

您可以简单地提供包含参数,如下所示:

   <parameter name="include" value="{'groups': ['first']}" />

我想在此重申,上述特性仅在使用BDDTestFactory2运行时可用,但在使用cucumber runner时不可用。使用qaf bdd runner进行参考

 类似资料:
  • 在研究了这些问题之后: Jest环境的异步设置 导入中未定义的窗口/文档 使用. ts文件(TypeScript)配置Jest全局测试设置 关于app.listen()回调 如何编写Jest配置文件 NodeJS:如何获取服务器的端口? https://alligator.io/nodejs/serving-static-files-in-express/ Promisifyserver.list

  • 我有一个与org自动连接的控制器。springframework。果心环境。环境 。 Spring Boot模块配置了云配置客户端。它在启动时从配置服务器读取配置。 控制器通过其方法之一从环境中获取值。 但是当我通过刷新endpoint刷新时,环境中的属性会为null。 经过几次刷新后,它将获得值。这样自动布线有问题吗?我应该在这里使用RefreshScope吗?工作原理。

  • 我正在使用testNg硒网格进行测试会话,我对整个东西非常满意 关键是测试的数量正在增长,现在它们至少需要 3 小时才能执行(在 30 个浏览器上进行 -100 次测试) 我计划进行 -150 次测试,所以,正如您可以想象的那样,我必须找到一个解决方案并并行启动它们 我试图玩一下这个,但没有现在很幸运,我现在看到的是两个浏览器启动,但只有一个通过测试。另一个只是等待:-)测试的结构如下,基本上 1

  • 在我的项目中,我使用的是Mavencucumber测试。 我有个试跑员 对于 jenkins 上的日常运行,我使用特定功能“mvn clean test -s -Dcucumber.filter.tags=”tag_from_feture_file“”。一切正常。 但是,有时我需要执行不包含在Jenkins中的小测试,它们不在功能文件中写入。例如: 问题是 - 当我将带有注释 (@Test) 的测

  • 如果你使用了 vux2 模板或者 webpack 模板,默认你可以直接通过判断 process.env.NODE_ENV 来区分 比如统计代码仅放在 production 环境,在不同环境里使用不同的 API 接口地址。 if (process.env.NODE_ENV === 'production') { // 干一些线上才要做的事情 } if (process.env.NODE_ENV

  • 例如: 测试。xml 案例#1:当我运行下面的特性文件时,它会正常执行并行测试: 有些事。特色 案例#2:当我使用“场景大纲”执行相同的场景时,并行测试同时进行,即使并行测试配置是在TestNG xml文件中设置的。 something2.feature 有人知道为什么QMETRY框架会出现这种情况吗?