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 {
}
相关文章
|
1月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
99 5
|
1月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
23天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
22 5
|
1月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
247 5
|
1月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
14天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
12 0
|
1月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
249 1
|
1月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
1月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
38 0
|
2月前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
45 3

热门文章

最新文章