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

Serenity BDD:如何使用软断言循环步骤

邹坚壁
2023-03-14

我需要对一组数据运行测试,但我找不到一种方法在我的步骤中执行软断言,并在 Serenity 报告中的正确步骤中显示错误。

@Then("All my datas are correct")
public void verifyMyDatas(){

    int[] myDataArray = new int[] {1,2,3,4};

    for(int i = 0; i < myDataArray.length; i++){

        mySteps.myAwesomeValidator(myDataArray[i]);
    }
}

以及示例步骤:

@Step("Checking the value {0}")
public void myAwesomeValidator(int value){

    //I need a soft assertion here
}

我尝试使用assertj框架。但我的问题是“我的所有数据都是正确的”步骤被正确标记为FAILURE,但所有子步骤“检查值X”都在Serenity的报告中标记为SUCCESSes。

我的测试代码 :

@Then("All my datas are correct")
public void verifyMyDatas(){

    SoftAssertions softAssertion = new SoftAssertions();

    int[] myDataArray = new int[] {1,2,3,4};

    for(int i = 0; i < myDataArray.length; i++){

这是我的秘密。myAwesomeValidator(myDataArray[i],softAssertion);}

    softAssertion.assertAll();
}

以及步骤:

@Step("Checking the value {0}")
public void myAwesomeValidator(int value, SoftAssertions softAssertion){

    softAssertion.assertThat(value < 3).isTrue();
}

编辑:试图澄清我的尝试的问题

共有1个答案

叶展
2023-03-14

我会尝试用< code>as()来描述断言,而不是引入一个< code >步骤来查看它是否有效(我相信它应该有效):

@Then("All my datas are correct")
public void verifyMyDatas(){

  SoftAssertions softAssertion = new SoftAssertions();

  int[] myDataArray = new int[] {1,2,3,4};
  for(int i = 0; i < myDataArray.length; i++) {
    myAwesomeValidator(myDataArray[i], softAssertion); 
  }

  softAssertion.assertAll();
}

public void myAwesomeValidator(int value, SoftAssertions softAssertion){

  // use as() to describe the assertion 
  softAssertion.assertThat(value)
               .as("awesomely validate value %d", value);
               .isLessThan(3);
} 
 类似资料:
  • 问题内容: 我希望打破PHP中的外部for / foreach循环。 可以在ActionScript中完成,如下所示: PHP等效项是什么? 问题答案: 对于2个嵌套循环: http://php.net/manual/en/control- structures.break.php

  • 试图看到一个在Cucumber中使用软断言的工作示例。我有以下简单的特性和步骤定义,我故意使一些验证失败,但cucumber测试仍然显示“通过”。我是不是做错什么了。 @给定(“^I have a Scenary for Soft Assert$”)public void i_have_a_scenario_for_soft_assert()throwsable{

  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件

  • 问题内容: 尽管我知道问这个问题会有点愚蠢,但我仍然想查询有关它的技术观点的更多信息。 无限循环的简单示例: 如何从此类外部中断(停止)此无限循环(例如,在继承的帮助下)? 问题答案: 即使写这篇文章我也觉得很脏,但是… 从不同的线程,你可以调用一个实现,抛出一个当你调用。

  • 有一个excelsheet,其中所有URL(16)都列在一列中。现在,一旦页面加载,需要验证页面标题是否与excel中已存储的预期标题匹配。我可以使用for循环执行它。如果全部通过,它将运行所有URL,但如果失败,它将停止运行。我需要完整地运行它,并给出一份通过和失败的报告。我编写了以下代码。 请在这方面帮助我。

  • 本文向大家介绍易语言判断循环首命令使用讲解,包括了易语言判断循环首命令使用讲解的使用技巧和注意事项,需要的朋友参考一下 判断循环首命令 操作系统支持:Windows、Linux、Unix  所属类别:流程控制 本命令根据提供的逻辑参数的值,来决定是否进入循环。如果提供的逻辑参数值为真,程序顺序执行下一条命令进入循环,否则跳转到本命令所对应的“判断循环尾”命令的下一条命令处以跳出循环。 语法:  无