美文网首页
越写悦快乐之如何使用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