Java+Selenium+Testng自动化学习(二):TestNG安装及生成测试报告

目录

(一)TestNG介绍

(二)TestNG的优点

(三)使用步骤

(四)TestNG安装使用

(五)TestNG常用注解

(六)Test.xml标签

(七)Idea+maven+testng+reportng生成测试报告 


(一)TestNG介绍

        TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便

        Java中已经有一个JUnit的测试框架了。 TestNG比JUnit功能强大的多。 测试人员一般用TestNG来写自动化测试。开发人员一般用JUnit写单元测试。

(二)TestNG的优点

        1. 漂亮的HTML格式测试报告

        2. 支持并发测试

        3. 参数化测试更简单

        4. 支持输出日志

        5. 支持更多功能的注解

(三)使用步骤

  1. 使用 intelij生成TestNG的测试程序框架

  2. 在生成的程序框架中编写测试代码逻辑

  3. 根据测试代码逻辑,插入TestNG注解标签

  4. 配置Testng.xml文件,设定测试类、测试方法、测试分组的执行信息

  5. 执行TestNG的测试程序

(四)TestNG安装使用

工程的pom.xml中添加如下内容即可:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.14.3</version>
</dependency>

示例代码:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.IOException;

import test.Business.LoginBusiness;
import test.Utils.ExcelDriver;

import static test.Page.BasePage.dr;

public class LoginCase {
    LoginBusiness loginbusiness = new LoginBusiness();
    ExcelDriver exceldriver = new ExcelDriver();

    @BeforeTest
    public void openUrl() throws InterruptedException, IOException {
        loginbusiness.openUrlBussiness();
    }

    @DataProvider(name = "UserData")
    //标记一种方法来提供测试方法的数据,要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
    public Object[][] words() throws IOException{
        return exceldriver.getTestData("src\\test\\Data", "UserData.xlsx", "Login");
    }

    @Test(dataProvider = "UserData")
    public void loginCase(String screenname,String username, String password, String name)throws IOException, InterruptedException {
        loginbusiness.loginBusiness(username,password,screenname);
        dr.navigate().refresh();
        Thread.sleep(2000);

    }

    @AfterTest
    public void closeUrl() throws InterruptedException, IOException {
        Thread.sleep(1000);
        loginbusiness.closeUrlBussiness();
    }
}

 (五)TestNG常用注解

注解

描述

@BeforeSuite

注解的方法将只运行一次,运行所有测试前此套件中。

@AfterSuite

注解的方法将只运行一次此套件中的所有测试都运行之后。

@BeforeClass

注解的方法将只运行一次先行先试在当前类中的方法调用。

@AfterClass

注解的方法将只运行一次后已经运行在当前类中的所有测试方法。

@BeforeTest

注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。

@AfterTest

注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。

@BeforeGroups

组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。

@AfterGroups

组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。

@BeforeMethod

注解的方法将每个测试方法之前运行。

@AfterMethod

被注释的方法将被运行后,每个测试方法。

@DataProvider

标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。

该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。

@Factory

作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。

@Listeners

定义一个测试类的监听器。

@Parameters

介绍如何将参数传递给@Test方法。

@Test

标记一个类或方法作为测试的一部分。

其它:

1. 不想运行某个用例时,可以在测试用例加上@Test(enable = false),  来禁用此测试用例

2. testng分组:

@Test(groups = "group1")
@Test(groups = "group2")

(六)Test.xml标签

1、选择一个类中的全部测试脚本

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySute">
    <test name="TestCaseClass">
        <classes>
            <class name="test.testcase.TestNGCase" />
        </classes>
    </test>
</suite>

2、选择一个类中的部分测试脚本

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySute">
    <test name="TestCaseClass">
        <classes>
            <class name="test.testcase.TestNGCase" >
                <methods>
                    <include name="test001"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

3、选择一个类中的某些组 

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySute">
    <test name="TestCaseClass">
        <groups>
            <run>
                <include name="group1"/>
            </run>
        </groups>
        <classes>
            <class name="test.testcase.TestNGCase"></class>
        </classes>
    </test>
</suite>

(七)Idea+maven+testng+reportng生成测试报告 

1、在pom.xml文件中添加maven的依赖包

        <dependency>
            <groupId>org.uncommons</groupId>
            <artifactId>reportng</artifactId>
            <version>1.1.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>

2、再在pom.xml文件添加插件

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.17</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>xmlfile/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <properties>
                        <property>
                            <name>usedefaultlisteners</name>
                            <value>false</value>
                        </property>
                        <property>
                            <name>listener</name>
                            <value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
                        </property>
                    </properties>
                    <workingDirectory>target/</workingDirectory>
                </configuration>
            </plugin>

    <build>
        <plugins>
            上面的内容是这个节点下添加,不要添加错位置了
        </plugins>
    </build>

3、在testng.xml中配置监听器

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySute">
    <test name="TestCaseClass">
        <classes>
            <class name="test.testcase.TestNGCase"></class>
        </classes>
    </test>
    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter"/>
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
    </listeners>
</suite>

4、IDEA配置:在Idea中打开Run-Edit Configurations...

在Listeners标签下勾选“Use default reporters”

 最后运行testng.xml,自动生成test-output目录,在html目录下找到index.html

打开index.html

 至此testng的配置到运行生成报告就介绍完了。

参考文档:自动化框架:Java+SpringBoot+IntelliJ IDEA+TestNG+maven - 李家新生代农民工 - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值