TestNG 如何在断言失败后继续执行测试

TestNG 如何在断言失败后继续执行测试

一个TestNG类可以有不同的测试,如test1,test2,test3等。在运行测试套件时可能会出现一些失败,并且用户可能会在@Test方法之间得到失败。一旦一个测试方法失败了,他希望继续执行,以便在这个时候可以找出所有的失败。默认情况下,如果@Test方法中发生了一个失败,TestNG会退出相同的@Test方法,并从下一个@Test方法继续执行。

在这里,用例是在同一个@Test方法中即使有断言失败也要继续执行下一行。

有多种方法可以解决这种情况:

  • 使用SoftAssert类来使用软断言。它会在断言失败后继续执行,并且所有的失败可以在最后使用assertAll()函数捕获。

  • 使用验证而不是断言。基本上,所有的断言都将被更改为验证。请注意,验证不受TestNG支持。用户应该使用try-catch块编写自己的自定义方法来处理断言并继续执行。

  • 使用try catch块。这更像是一个容错技术,而不是在断言失败后确切地执行下一行代码。

在本文中,让我们用SoftAssert来说明在TestNG中断言失败时如何继续执行。

步骤

  • 步骤1:导入org.testng.annotations.Test以使用TestNG。

  • 步骤2:在NewTest类中写一个注解@Test。

  • 步骤3:创建一个@Test注解的方法testCase1。

  • 步骤4:使用SoftAssert类添加多个断言,如程序部分所示。

  • 步骤5:为testCase2重复这些步骤。使用assert添加断言。

  • 步骤6:现在创建testNG.xml。

  • 步骤7:现在,在IDE中运行testNG.xml或直接运行testNG类,或使用命令行编译和运行它。

示例

以下代码创建了一个TestNG类并显示 Listener 的功能:

src/NewTest.java

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;


public class NewTest {

    private SoftAssert softAssert = new SoftAssert();
    @Test(priority = 0)
    public void testCase1() {
        System.out.println("in test case 1 of NewTest");
        softAssert.assertTrue(false);
        softAssert.assertNotEquals(5,6);
        softAssert.assertEquals(1, 2);
        softAssert.assertAll();
    }
    @Test(priority = 1)
    public void testCase2() {

        System.out.println("in test case 2 of NewTest");
        Assert.assertTrue(true);
    }
}

testng.xml

这是一个用于组织和运行 TestNG 测试用例的配置文件。

当只需要执行有限的测试而不是整个套件时,它非常方便。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parent_Suite">
    <test name="test">
        <classes>
            <class name="NewTest" />
        </classes>
    </test>
</suite>

输出

[INFO] Running TestSuite
in test case 1 of NewTestngClass
in test case 2 of NewTestngClass
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.832 s <<< FAILURE! - in TestSuite
[ERROR] NewTest.testCase1  Time elapsed: 0.016 s  <<< FAILURE!
java.lang.AssertionError: 
The following asserts failed:
    expected [true] but found [false],
    expected [2] but found [1]
    at NewTest.testCase1(newTest.java:15)
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   NewTest.testCase1:15 The following asserts failed:
    expected [true] but found [false],
    expected [2] but found [1]
[INFO] 
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程