Junit+Selenium 自动化测试

简介: Junit+Selenium 自动化测试

一.注解

• @Test:标记一个测试用例


• @Disable:忽略此条测试用例


• @BeforeAll:在所有用例执行前先执行


• @AfterAll:在所有用例执行后再执行


• @BefortEach :在每个测试用例执行前执行


• @AfterEach:在每个测试用例执行后执行


public class Test1 {
    @Test
    public void test01(){
        System.out.println("这是test01中的数据");
    }
    @Test
    void test02(){
        System.out.println("这是test02中的数据");
    }
    @Disabled
    void test03(){
        System.out.println("这是test03中的数据");
    }
    @AfterAll
    static void test04(){
        System.out.println("这是afterAll的内容");
    }
    @BeforeAll
    static void Test05(){
        System.out.println("这是beforeAll的内容");
    }
    @BeforeEach
    void test06(){
        System.out.println("这是BeforeEach的内容");
    }
    @AfterEach
    void test07(){
        System.out.println("这是AfterEach的内容");
    }
}

执行结果:

二.参数化

此时也是要导入新的依赖:

2.1 单参数

    @ParameterizedTest
    @ValueSource(ints = {1,2,3})
    void test01(int n){
        System.out.println(n);
    }
    @ParameterizedTest
    @ValueSource(strings ="1")
    void test02(String s){
        System.out.println(s);
    }

2.2 CSV获取参数

/*  张三,李四 
    张三2,李四2
    张三3,李四3*/
    @ParameterizedTest
    //在resources中创建一个同名文件,文件每一行一次测试的内容,测试用例可根据参数类型自动匹配
    @CsvFileSource(resources = "/name.csv")
    void test03(String n,String s){
        System.out.println(n+","+s);
    }
 
    @ParameterizedTest
//空字符串使用''来传递
    @CsvSource({"1,张三","2,李四","3,''"})
    void test05(int n,String name){
        System.out.println(n+","+name);
    }

2.3 方法获取参数

    public static Stream<Arguments> generator(){
        return Stream.of(Arguments.arguments(1,"张三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));
    }
//    @Test
//    @Test不能与@ParameterizedTest一同使用,两者会产生冲突
    @ParameterizedTest
    @MethodSource("generator")
    void Test04(int num,String name){
        System.out.println(num+" "+name);
    }

2.4 执行顺序

在项目中,测试的各方法的执行顺序不是自上而下的

/*指定每个方法的执行顺序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)*/
 
    //随机执行,但是仍可以通过@Order来执行
    @TestMethodOrder(MethodOrderer.Random.class)
public class JOrder {
    //@Order(2)
    @Test
    void B(){
        System.out.println("b");
    }
    //@Order(1)
    @Test
    void A() {
        System.out.println("a");
    }
    //@Order(3)
    @Test
    void test01(){
        System.out.println("test01");
    }
    //@Order(4)
    @Test
    void test02(){
        System.out.println("test02");
    }
}

2.5 断言

    @ParameterizedTest
    @ValueSource(strings ="1")
    void test02(String s){
//        Assertions.assertEquals("1",s);
//        Assertions.assertNotEquals("2",s);
        String str=null;
        Assertions.assertNull(str);
       /* String str="string";
       Assertions.assertNotNull(str,);*/
    }

三.测试套件

依赖:

     <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
            <scope>test</scope>
        </dependency>    
    <!--suite 需要engine-->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite-api</artifactId>
            <version>1.9.1</version>
        </dependency>
package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;
 
public class Test1 {
    @Test
    void test01(){
        System.out.println("junit_Sele/pakage1/test1");
    }
}
 
 
package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;
 
public class Test2 {
    @Test
    public void Test2(){
        System.out.println("junit_Sele/pakage1/test2");
    }
}
 
 
package junit_Sele.pakage2;
import org.junit.jupiter.api.Test;
 
public class Test1 {
    @Test
    void test01(){
        System.out.println("junit_Sele/pakage2");
    }
}
@Suite
//指定同一个包中的不同类运行的顺序
//@SelectClasses({JAssert.class, JOrder.class,Para.class})
//指定一个包中不同类运行的顺序
@SelectPackages(value = {"junit_Sele.pakage1", "junit_Sele.pakage2"})
//指定一个包的同时指定包内的类的运行顺序
@SelectClasses({junit_Sele.pakage1.Test1.class,junit_Sele.pakage1.Test2.class})
public class RunSuite {
}
相关文章
|
11天前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
11天前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
7天前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
28 6
|
5天前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
6天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
8 0
|
7天前
|
JavaScript 前端开发 测试技术
Selenium2Library实现基于GUI的测试
Selenium2Library实现基于GUI的测试
15 0
|
20天前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
20天前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
20天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【8月更文挑战第31天】在软件开发的世界中,自动化测试是提高产品质量和开发效率不可或缺的一环。本文将深入探讨Selenium这一强大的自动化测试工具,从其架构、优势到实战应用,一步步揭示如何利用Selenium框架提升软件测试的效率和准确性。通过具体的代码示例,我们将展示Selenium如何简化测试流程,帮助开发者快速定位问题,确保软件的稳定性和可靠性。无论你是测试新手还是资深开发者,这篇文章都将为你打开一扇通往高效自动化测试的大门。
|
20天前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。