TestNG学习

TestNG学习笔记

TestNG学习笔记

常用注解

TestNG最常使用的是它的注解。

注解描述属性例子
@Test 表示方法是一个基于TestNG的测试用例 enabled, priority, invocationCount, dependsOnMethods @Test(enabled = false)

例子

@Test(invocationCount = 3, priority = 1)
public void testMethod() {
    // 测试代码
}

前后置注解

TestNG 提供了一系列的注解,用于在测试的不同阶段执行特定的初始化和清理工作。这些注解可以应用于方法或类上,以确保在测试执行前后执行特定的逻辑。

注解描述作用域执行顺序
@BeforeSuite 在测试套件中的所有测试类和方法执行前调用一次。 测试套件 最先执行
@AfterSuite 在测试套件中的所有测试类和方法执行后调用一次。 测试套件 最后执行
@BeforeTest 在测试套件中的每个测试类执行前调用一次。 测试类 在@BeforeSuite之后
@AfterTest 在测试套件中的每个测试类执行后调用一次。 测试类 在@AfterSuite之前
@BeforeClass 在当前类中的所有测试方法执行前调用一次。 测试类 在@BeforeTest之后
@AfterClass 在当前类中的所有测试方法执行后调用一次。 测试类 在@AfterTest之前
@BeforeMethod 在当前类中的每个测试方法执行前调用。 测试方法 在@BeforeClass之后
@AfterMethod 在当前类中的每个测试方法执行后调用。 测试方法 在@AfterClass之前

TestNG常用断言

断言是验证测试结果是否符合预期的关键步骤。以下是一些常用的断言方法及其描述:

1. Assert.assertEquals

断言两个值相等。如果实际值与预期值不相等,则测试失败。可以提供一个可选的错误消息,当断言失败时显示。

Assert.assertEquals(actualValue, expectedValue, "Error message");

例如,比较两个字符串是否相等。

2. Assert.assertTrue

断言一个布尔表达式为真。如果表达式为假,则测试失败,并显示提供的错误消息。

Assert.assertTrue(condition, "Error message");

这对于验证条件性逻辑非常有用。

3. Assert.assertFalse

与assertTrue相反,断言一个布尔表达式为假。如果表达式为真,则测试失败。

Assert.assertFalse(condition, "Error message");

4. Assert.assertNotNull

断言一个对象不是null。如果对象为null,则测试失败。

Assert.assertNotNull(object, "Error message");

5. Assert.assertNull

断言一个对象是null。如果对象不为null,则测试失败。

Assert.assertNull(object, "Error message");

6. Assert.assertSame

断言两个对象引用相同的实例。这与assertEquals不同,后者是比较对象的值。

Assert.assertSame(object1, object2, "Error message");

7. Assert.assertNotSame

断言两个对象不是引用相同的实例。

Assert.assertNotSame(object1, object2, "Error message");

8. Assert.assertEqualsNoOrder

断言两个数组或集合的内容相同,但顺序可以不同。这对于忽略元素顺序的比较非常有用。

Assert.assertEqualsNoOrder(array1, array2, "Error message");

9. Assert.assertNotEquals

断言两个值不相等。如果实际值与预期值相等,则测试失败。

Assert.assertNotEquals(actualValue, notExpectedValue, "Error message");

软断言 (SoftAssert)

允许在一个测试用例中执行多个断言,即使其中一个断言失败,其他断言也会继续执行。这与硬断言不同,后者在断言失败时会立即停止执行当前测试用例。使用软断言时,需要在测试用例的最后调用assertAll()方法来报告所有未通过的断言。

SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(actualValue, expectedValue, "Error message");
// 其他断言...
softAssert.assertAll();
    

批量执行多个测试用例

通过testng.xml配置文件实现。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="项目名称">
    <test name="登录模块">
        <parameter name="testParameter" value="testValue" />
        <classes>
            <class name="com.api.login.TestLogin"></class>
        </classes>
    </test>
</suite>

TestNG数据驱动

用于从外部数据源获取测试数据。

第一种方式:简单传值

<test name="登录模块">
    <parameter name="username" value="admin"></parameter>
    <parameter name="password" value="123"></parameter>
    <classes>
        <class name="com.api.login.TestLogin2"></class>
    </classes>
</test>

@Test(dataProvider = "getData")
public void testMethod(String username, String password) {
    // 测试代码
}

@DataProvider
public Object[][] getData() {
    return new Object[][] {
        {"admin", "123"},
        {"user", "456"}
    };
}

第二种方式:定义数据源

@Test(dataProvider = "getData")
public void testMethod(String username, String password) {
    // 测试代码
}

@DataProvider(name = "getData")
public Object[][] provideData() {
    return new Object[][] {
        {"张三", "123"},
        {"李四", "456"}
    };
}

总结

  • @Test注解:用于定义测试用例,并可以通过其属性如enabled, priority, invocationCount, dependsOnMethods来控制测试用例的执行行为和顺序。
  • 前后置注解:包括@BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod和@AfterSuite, @AfterTest, @AfterClass, @AfterMethod,这些注解允许我们在测试的不同阶段执行初始化和清理工作。
  • 断言方法:如Assert.assertEquals和Assert.assertTrue,用于验证测试结果是否符合预期,是测试中不可或缺的部分。
  • 批量执行测试用例:通过testng.xml配置文件,我们可以定义测试套件和测试集,批量执行多个测试用例,并通过参数化提高测试的灵活性。
  • 数据驱动测试:TestNG支持从外部数据源获取测试数据,支持简单传值和定义数据源两种方式,使得我们可以针对不同的输入数据执行相同的测试逻辑。

所使用的注解包括:

  • @Test:定义测试用例的基本注解。
  • @Before* 和 @After*:用于测试方法或测试类的前后执行特定方法的注解。
  • Assert.*:提供了一系列断言方法,用于验证测试结果。
  • @DataProvider 和 @Parameters:用于实现数据驱动测试,从外部数据源提供测试数据。

本文作者:LotoLe

本文链接:https://www.cnblogs.com/CodeByte2002/p/18471923

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   =·~·=  阅读(14)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.