TestNg使用及TestNg用例管理

    xiaoxiao2021-03-25  90

    使用TestNg要先在eclipse上安装插件

    一、TestNg常用注脚介绍

    1.  @Test

    ·表示的意义:

    1)表示该方法是一个测试方法,在运行时,会自动运行有@Test注脚的方法

    2.  @BeforeMethod @AfterMethod

    ·表示的意义:

    1) @BeforeMethod加了该注脚的方法在每一个test运行之前都会自动的被调用运行

    2) @AfterMethod该注脚的方法会在每一个测试方法运行之后自动的被调用运行

    示例:

     

    3.  @BeforeClass @AfterClass

    表示的意义:

    1)BeforeClassAfterClass,这个两个注脚的方法,在每个类运行之前会自动的被调用一次

    用处:

    1)在自动化脚本运行时,一个类里面的所有测试方法设计的是在一个浏览器里运行,那么就是说在这个类对象产生之前,就要把浏览器给启动起来,这个时候beforeclass可以启动浏览器,afterclass就可以关闭浏览器了

    示例:

     

    运行结果:

     

    二、TestNg的数据驱动

    1. 数据驱动

    1)什么是数据驱动?

    ·数据驱动是指在一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,还有每次运行时对应的参数

    2)数据驱动的应用场景:

    ·比如我们在测试登录时,要测试用不同的账户登录,难道我们需要针对每一个账户去写一个脚本吗?这样显然是不明智的,于是,testng为我们提供了这个注脚,让我们只需要提供出数据,就可以控制脚本运行次数及相应的参数。

    2. TestNg数据驱动(数据源)

    1)实现方式:

    ·用注脚: @DataProvider

    2)示例:

    第一种实现方式:不指定name

     

    运行结果:

     

    第二种方式:指定name

     

    运行结果:

     

     

    三、TestNgXML运行

    TestNg的几种运行方式:

    1. method为基点

    <?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" verbose="1" parallel="false" thread-count="1"> <test name="test1"> <classes> <class name="com.test.ng1.test1"> <methods> <include name="test2"/> <include name="test1"/> </methods> </class> </classes> </test> </suite>运行结果:

    2. class为基点

    <?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" verbose="1" parallel="false" thread-count="1"> <test name="test1"> <classes> <class name="com.test.ng1.test1"> </class> </classes> </test> </suite>

    运行结果:

    3. package为基点

    <?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" verbose="1" parallel="false" thread-count="1"> <test name="test1"> <packages> <package name="com.test.ng1"/> </packages> </test> </suite>

    四、TestNg用例管理

    1. 用例管理原则——用例独立少依赖

    package com.test.ng1; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; public class test1 { //无名的数据驱动,调用可以使用方法名 @DataProvider public Object[][] logindata(){ return new Object[][]{{"a"},{"b"}}; } //因为数据驱动没有名字,搜易可以写方法名 @Test(dataProvider="logindata") public void test1(String info){ System.out.println(info); } //为数据驱动定义名字 @DataProvider(name="longoutdata") public Object[][] logoutDataInfo(){ return new Object[][]{{"1"},{"2"}}; } //指定数据驱动的名字,而非方法名 @Test(dataProvider="longoutdata") public void test2(String info){ System.out.println(info); } @BeforeClass public void bClass(){ System.out.println("BeforeClass"); } @AfterClass public void aClass(){ System.out.println("AfterClass"); } @BeforeMethod public void setUp(){ System.out.println("beforemethod,setUp"); } @AfterMethod public void tearDown(){ System.out.println("aftermethod,tearDown"); } }

    转载请注明原文地址: https://ju.6miu.com/read-16390.html

    最新回复(0)