美文网首页
越写悦快乐之如何使用TestNG开启构建参数化的测试套件

越写悦快乐之如何使用TestNG开启构建参数化的测试套件

作者: 韬声依旧在路上 | 来源:发表于2019-08-21 20:25 被阅读0次
TestNG - 图片来自简书App

上一篇文章,我们阐述了如何使用Selenium框架,基于Java语言的开启自动化的Web测试,我们从配置开发环境入手,然后编写测试用例,,运行测试并生成测试报告,开启了我们的自动化测试之路。今天,在此基础上,我们利用TestNG配置启动的测试用例,可以优化我们的测试流程,使用参数化的方式让Selenium框架帮助我们填充页面数据,进一步构建自动化的流程,让我们马上开始吧。

开发环境

  • Window 10.0.17763
  • Java 8.0.191
  • Chrome 73.0.3683
  • IDEA 2018.3

Maven Version

Maven版本 - 图片来自简书App

Build Version

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>me.weitao.app</groupId>
    <artifactId>selenium-tour</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>selenium-tour</name>
    <description>Selenium Project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.relevantcodes</groupId>
            <artifactId>extentreports</artifactId>
            <version>2.41.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>${basedir}/src/main/resources/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

构建步骤

添加依赖 => 配置文件 => 编写测试类 => 验证结果

添加依赖

参考

配置文件

我们利用TestNG的配置文件testng.xml文件来配置运行mvn test的启动项,下面给出配置文件的内容,仅供大家参考。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Selenium Automation Test Suite">

    <test name="Parameter Test Cases">
        <parameter name="appConfig" value="name.properties"/>
        <classes>
            <class name="me.weitao.app.selenium.ParameterTest"/>
        </classes>
    </test>
</suite>

我们可以查看DTD文件来检索XML配置文件支持的标签及属性,这样我们会更加熟悉配置文件的含义,并结合具体的业务逻辑丰富TestNG的配置选项,然后我们在src/main/resources文件夹下创建name.properties文件并写入以下内容。

name=weitao

编写测试类

然后我们在src/test/java下创建ParameterTest类并读取配置文件name.properties,将文件内容打印到控制台,当然我们也可以从指定的目录读取指定的文件并保存起来,以便执行下一个测试时能获取参数化的数据。

package me.weitao.app.selenium;

import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import java.util.Properties;

/**
 * @author Watony Weng
 */

public class ParameterTest {

    @Test
    @Parameters(value = {"appConfig"})
    public void fetchFile(@Optional("name.properties") String appConfig) {
        System.out.println("appConfig => " + appConfig);
        try {
            Properties props = PropertiesLoaderUtils.loadAllProperties("name.properties");
            for (Object key : props.keySet()) {
                System.out.println(key + " => " + props.get(key));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

要点解析

  • 单独执行fetchFile方法可以读取配置文件内容
  • 通过PropertiesLoaderUtils快速加载配置文件
  • 根据配置文件的Key-Value关系输出值

运行测试

我们在IDEA开发环境下,切换窗口到Terminal下,执行mvn clean test后,在Terminal窗口输出以下结果。

运行结果 - 图片来自简书App

参考

个人收获及总结

我梳理一下今天的知识点,从文件中读取数据并保存,通过TestNG的方式执行Test Suite,那么接下来我们可以将参数化的方式和Selenium结合起来,填充页面,比如发送文件到输入框,响应页面事件,只要是利用WebDriver标准操作页面的方式,我们就能发挥无限的潜能,构建更加稳定和更快的页面,随后我们会利用POM来扩展Selenium的操作,让它更加标椎化。我们的目标是利用工具提升我们的工作效率,更快更好地服务我们的业务。 希望大家保持学习的热情,构建更加快速和稳定的产品或服务。

相关文章

网友评论

      本文标题:越写悦快乐之如何使用TestNG开启构建参数化的测试套件

      本文链接:https://www.haomeiwen.com/subject/pvfwsctx.html