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 {
}
相关文章
|
3月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
156 5
|
14天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
116 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
23天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
75 19
Selenium IDE:Web自动化测试的得力助手
|
25天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
144 17
Selenium:强大的 Web 自动化测试工具
|
3月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
3月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
37 5
|
3月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
579 5
|
3月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
2月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
54 0
|
3月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
417 1