知识探索项目测试报告

news2025/1/12 8:45:32

在这里插入图片描述

⭐️前言⭐️

本篇文章是博主基于知识探索项目所做的测试报告,主要涉及到的测试知识有设计测试用例自动化测试等测试知识。

🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅1.知识探索项目测试用例
  • 🍅2.selenium4+JUnit5实现Web自动化测试
    • 2.1 测试工具类
    • 2.2 自动化测试

🍅1.知识探索项目测试用例

请添加图片描述

🍅2.selenium4+JUnit5实现Web自动化测试

2.1 测试工具类

因为每一步的测试都需要获取驱动对象,所以将获取驱动对象的方法抽象出来单独成类,用于其他类的使用;

便于检查测试结果,还需要在公共类中实现屏幕截图的方法,以下是测试工具类的具体代码:

public class Utils {
    public static ChromeDriver driver;

    // 创建驱动对象
    public static ChromeDriver createDriver() {
        // 设置无头模式
        ChromeOptions options=new ChromeOptions();
        options.addArguments("-headless");
        // 驱动对象已经创建好了/没有创建
        if(driver==null) {
            driver=new ChromeDriver(options);
            // 创建隐式等待(防止因页面加载过慢而导致错误)
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        }
        return driver;
    }

    public static List<String> getTime() {
        // 文件按照天的维度按文件夹进行保存
        SimpleDateFormat sim1=new SimpleDateFormat("yyyyMMdd-HHmmssSS");
        SimpleDateFormat sim2=new SimpleDateFormat("yyyyMMdd");
        String fileName=sim1.format(System.currentTimeMillis());
        String dirName=sim2.format(System.currentTimeMillis());
        List<String> list=new ArrayList<>();
        list.add(dirName);
        list.add(fileName);
        return list;
    }
    /**
     * 获取屏幕截图,把所有的用例执行结果保存下来
     */
    public static void getScreenShot(String str) throws IOException {
        List<String> list=getTime();
        String fileName="./src/test/java/screenshot/"+list.get(0)+"/"+str+"_"+list.get(1)+".png";
        File srcFile=driver.getScreenshotAs(OutputType.FILE);
        // 把屏幕截图生成的文件放到指定的路径
        FileUtils.copyFile(srcFile,new File(fileName));
    }
}

2.2 自动化测试

首先先获取到驱动对象,然后通过@Before注解方法,访问到登录页面的URL。

public static ChromeDriver driver= Utils.createDriver();
    // 先获取到driver对象,然后再访问URL
    @BeforeAll
    static void baseControl() {
        driver.get("http://162.14.74.192:8080/index.html");
    }

通过检查跳转后搜索页面的元素是否存在,检查搜索页面是否打开正确。

 /*
    检查搜索打开页面是否正确
    检查点:搜索框 搜索按钮是否存在
     */
    @Test
    @Order(1)
    void loadTest() throws IOException {
        driver.findElement(By.cssSelector("#search-key"));
        driver.findElement(By.cssSelector("#search-btn"));
        Utils.getScreenShot(getClass().getName());
    }

用多个参数来检验搜索关键字的功能:

 /*
    多个参数检查搜索结果是否能加载成功
     */
    @ParameterizedTest
    @ValueSource(strings = {"array","list"})
    void searchTest(String text) throws IOException {
        driver.findElement(By.cssSelector("#search-key")).clear();
        driver.findElement(By.cssSelector("#search-key")).sendKeys(text);

        driver.findElement(By.cssSelector("#search-btn")).click();
        driver.findElement(By.cssSelector("body > div > div.result > div:nth-child(2) > a"));
        Utils.getScreenShot(getClass().getName());
    }

最后关闭驱动:

@AfterAll
    static void driverQuit() {
        driver.quit();
    }

完整代码:

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class SearchTest {
    public static ChromeDriver driver= Utils.createDriver();
    // 先获取到driver对象,然后再访问URL
    @BeforeAll
    static void baseControl() {
        driver.get("http://162.14.74.192:8080/index.html");
    }

    /*
    检查搜索打开页面是否正确
    检查点:搜索框 搜索按钮是否存在
     */
    @Test
    @Order(1)
    void loadTest() throws IOException {
        driver.findElement(By.cssSelector("#search-key"));
        driver.findElement(By.cssSelector("#search-btn"));
        Utils.getScreenShot(getClass().getName());
    }

    /*
    多个参数检查搜索结果是否能加载成功
     */
    @ParameterizedTest
    @ValueSource(strings = {"array","list"})
    void searchTest(String text) throws IOException {
        driver.findElement(By.cssSelector("#search-key")).clear();
        driver.findElement(By.cssSelector("#search-key")).sendKeys(text);

        driver.findElement(By.cssSelector("#search-btn")).click();
        driver.findElement(By.cssSelector("body > div > div.result > div:nth-child(2) > a"));
        Utils.getScreenShot(getClass().getName());
    }
    @AfterAll
    static void driverQuit() {
        driver.quit();
    }
}

结果展示:
在这里插入图片描述


⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue的药物咨询平台

基于springbootvue的药物咨询平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&…

二阶段提交事务的实现和缺点

背景 说起分布式事务&#xff0c;我们最绕不开的一个话题就是该不该使用分布式事务&#xff0c;而要理解为什么做出使用与否的决定&#xff0c;就必须要提到分布式事务中的最经典的实现&#xff1a;两阶段提交事务,本文我们就简答介绍下这个两阶段提交事务以及它的优缺点 技术…

【Opencv 系列】 第6章 人脸检测(Haar/dlib) 关键点检测

本章内容 1.人脸检测&#xff0c;分别用Haar 和 dlib 目标&#xff1a;确定图片中人脸的位置&#xff0c;并画出矩形框 Haar Cascade 哈尔级联 核心原理 &#xff08;1&#xff09;使用Haar-like特征做检测 &#xff08;2&#xff09;Integral Image : 积分图加速特征计算 …

SpringSecurity的权限校验详解说明(附完整代码)

说明 SpringSecurity的权限校是基于SpringSecurity的安全认证的详解说明(附完整代码) &#xff08;https://blog.csdn.net/qq_51076413/article/details/129102660&#xff09;的讲解&#xff0c;如果不了解SpringSecurity是怎么认证&#xff0c;请先看下【SpringSecurity的安…

【1792. 最大平均通过率】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 一所学校里有一些班级&#xff0c;每个班级里有一些学生&#xff0c;现在每个班都会进行一场期末考试。给你一个二维数组 classes &#xff0c;其中 classes[i] [passi, totali] &#xff0c;表示你…

0xL4ugh 2023

这回跟着个队伍跑&#xff0c;不过还是2X以后的成绩&#xff0c;前边太卷了。自己会的部分&#xff0c;有些是别人已经提交了的。记录一下。Cryptocrypto 1给了一些数据&#xff0c;像这样就没有别的了ct [0, 1, 1, 2, 5, 10, 20, 40, 79, 159, 317, 635, 1269, 2538, 5077, 1…

2023.02.19 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.方法5.1 Local Representation Learning5.2 Global Representation Learning5.3 Item Similarity Gating6.实验6.1 数据集6.2 结果7.结论深度学习1.对偶问题1.1 拉格朗日乘数法1.2 强对偶性2.SVM优化3.软间隔3.1 解决问题3.…

尚医通 (十八)微信登录

目录一、生成微信登录二维码1、准备工作2、后端开发service_user3、前端显示登录二维码4、二维码出现不了进行调试二、开发微信扫描回调1、准备工作2、后台开发3、前台开发三、分析代码四、bug一、生成微信登录二维码 1、准备工作 1、注册 2、邮箱激活 3、完善开发者资料 4、…

JSP中http与内置对象学习笔记

本博文讲述jsp客户端与服务器端的http、jsp内置对象与控制流和数据流实现 1.HTTP请求响应机制 HTTP协议是TCP/IP协议中的一个应用层协议&#xff0c;用于定义客户端与服务器之间交换数据的过程 1.1 HTTP请求 HTTP请求由请求行、消息报头、空行和请求数据4部分组成。 请求行…

ThreeJS 之界面控制

文章目录参考描述界面自适应问题resize 事件修改画布大小修改视锥体的宽高比全屏显示dblclick 事件检测全屏显示状态进入全屏显示状态退出全屏显示状态尾声参考 项目描述ThreeJS官方文档哔哩哔哩老陈打码搜索引擎BingMDN 文档document.mozFullScreenElementMDN 文档Element.re…

LeetCode题目笔记——6359. 替换一个数字后的最大差值

文章目录题目描述题目链接题目难度——简单方法一&#xff1a;替换代码/Python代码优化总结题目描述 给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。 请你返回将 num 中 恰好一个 数字进行替换后&#xff0c;得到的最大值和最小值…

CTK学习:(一)编译CTK

CTK插件框架简介 CTK Plugin Framework是用于C++的动态组件系统,以OSGi规范为模型。在此框架下,应用程序由不同的组件组成,遵循面向服务的方法。 ctk是一个开源项目,Github 地址:https://github.com/commontk。 源码地址commontk/CTK: A set of common support code for…

信小程序点击按钮绘制定制转发分享图

1. 说明 先上代码片断分享链接&#xff1a; https://developers.weixin.qq.com/s/vl3ws9mA72GG 使用 painter 画图 按钮传递定制化信息 效果如下&#xff1a; 2. 关键代码说明 文件列表如下&#xff1a; {"usingComponents": {"painter": "/com…

基于springboot的停车场管理系统(程序+文档)

大家好✌&#xff01;我是CZ淡陌。将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。 &#x1f345;更多优质项目&#x1f447;&#x1f…

Android实例仿真之二

目录 三 从无入手 第一阶段 第二阶段 第三阶段 第四阶段 第五阶段 第六阶段 第七阶段 八 举两个典型例子&#xff1a; 九 逆向工程 三 从无入手 这节标题叫从无入手&#xff0c;什么意思呢&#xff1f;如果没有Android这个实例存在&#xff0c;你要做一个类似Android…

Mysql数据库事务

数据库事务 数据库事务由一组sql语句组成。 所有sql语句执行成功则事务整体成功&#xff1b;任一条sql语句失败则事务整体失败&#xff0c;数据恢复到事务之前的状态。 Mysql 事务操作 开始事务 start transaction;- 或 begin;事务开始后&#xff0c;对数据的增删改操作不…

MySQL最佳实践

一、MySQL查询执行过程 1.MySQL分层结构 MySQL8.0没有查询缓存的功能了,如果频繁修改缓存,将会损耗性能查询流程就按照分层结构就可以清楚,只要了解各个组件的各自功能就行分析器主要分析语法和词法是否正确优化器主要优化SQL语句 二、MySQL更新执行过程 更新主要涉及两个重…

SpringCloud - Ribbon负载均衡

目录 负载均衡流程 负载均衡策略 Ribbon加载策略 负载均衡流程 Ribbon将http://userservice/user/1请求拦截下来&#xff0c;帮忙找到真实地址http://localhost:8081LoadBalancerInterceptor类对RestTemplate的请求进行拦截&#xff0c;然后从Eureka根据服务id获取服务列表&…

正点原子ARM裸机开发篇

裸机就是手动的操作硬件来实现驱动设备&#xff0c;后面会有驱动框架不需要这么麻烦 第八章 汇编 LED 灯实验 核心过程 通过汇编语言来控制硬件&#xff08;驱动程序&#xff09; 代码流程 1、使能 GPIO1 时钟 GPIO1 的时钟由 CCM_CCGR1 的 bit27 和 bit26 这两个位控制&…

SSL/STL是什么?怎么工作的?Keystore 和 Truststore是什么?

安全套接字层&#xff08;Secure Sockets Layer&#xff09;&#xff0c;也称为 SSL&#xff0c;是一种加密协议(encryption protocol)&#xff0c;可在 Internet 上的设备之间创建身份验证的通道(authenticated channel)&#xff0c;以便可以安全地共享信息。本质上&#xff0…