首页 > 其他分享 >TestNG学习

TestNG学习

时间:2024-10-17 13:22:08浏览次数:9  
标签:Assert 断言 TestNG 学习 测试 注解 message 执行

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:用于实现数据驱动测试,从外部数据源提供测试数据。

标签:Assert,断言,TestNG,学习,测试,注解,message,执行
From: https://www.cnblogs.com/CodeByte2002/p/18471923

相关文章

  • Machine Learning的学习旅途
    交叉验证cross_val_scorecross_val_score是Scikit-learn中的一个函数,用于执行交叉验证(cross-validation),它可以帮助评估模型的泛化能力。交叉验证是一种常见的模型评估方法,通过将数据集分成多个训练和测试集,避免模型过拟合并评估它在不同数据划分上的表现。使用及常见参数......
  • 机器学习【教育系统改善及其应用】
    机器学习【教育系统改善及其应用】一、机器学习教育体系改善1)个性化学习2)精准评估与反馈3)优化教学资源分配4)辅助教师教学决策5)智能辅导系统6)挑战与展望二、机器学习在教育实践中的应用1)个性化学习2)智能辅导3)评估和预测学生表现4)智能作业批改5)优化教育资源分配6)提升教学......
  • Vit学习笔记
    目录1.Transformer模型2.嵌入(Embedding)3.自注意力(self-attention)4.多头自注意力(Multi-headself-Attention)本篇文章为参考多篇笔记记录的个人学习笔记1.Transformer模型        将Transformer模型视为一个黑盒,如图1所示。在机器翻译任务中,将一种语言的一......
  • 【MYSQL学习】MySQL连接查询:复杂连接的5大绝招你GET到了吗?
    ......
  • 【MYSQL学习】MySQL索引:删除索引的5大绝招你GET到了吗?
    ......
  • R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析
     随机森林作为一种集成学习方法,在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性,随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中,使用Bootstrap抽样生成不同的训练集,并在节点分裂时随机选择特征子集,这使得模型具......
  • perl学习笔记15_把hasharray存储在文件中
    目录可以把hash或array存储在文件中,再从文件中把变量load回来#加载模块useStorableqw/storeretrieve/;#定义变量my%data0=("a","aaa","b","bbb","c","ccc","d","ddd");#一个一维hashmy%data1=();#......
  • 【机器学习(十三)】零代码开发案例之股票价格预测分析—Sentosa_DSML社区版
    文章目录一、背景描述二、Sentosa_DSML社区版算法实现(一)数据读入(二)特征工程(三)样本分区(四)模型训练和评估(五)模型可视化三、总结一、背景描述  股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因素和......
  • 从零开始学机器学习——构建一个推荐web应用
    首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns今天,我们终于将分类器这一章节学习完活了,和回归一样,最后一章节用来构建web应用程序,我们会回顾之前所学的知识点,并新增一个web应用用来让模型和用户交互。所以今天的主题是美食推荐。美食推荐Web应用程序首......
  • 机器学习(MachineLearning)(8)——模型评估与优化
    机器学习(MachineLearning)(1)——机器学习概述机器学习(MachineLearning)(2)——线性回归机器学习(MachineLearning)(3)——决策树回归机器学习(MachineLearning)(4)---------分类_逻辑回归机器学习(MachineLearning)(5)——分类_决策树机器学习(MachineLearning)(6)——分类_支持向量机机......