Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用(四)

在这里插入图片描述

    • Puppeteer结合测试工具jest使用(四)
        • 一、简介
        • 二、与jest结合使用,集成到常规测试
        • 三、支持其他的几种
        • 四、总结

一、简介
  • Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node.js库, Puppeteer支持与node测试工具进行配合集成,集成到一起进行自动化测试。

  • Jest 是由 Facebook 提供的一款 JavaScript 测试框架,它可以帮助我们编写可靠的测试用例,并能够实现断言、mock 函数等功能。Jest 能够帮助我们做单元测试、集成测试以及 UI 测试等,与 Puppeteer 结合使用可以实现更全面的 UI 测试。

二、与jest结合使用,集成到常规测试

不熟悉jest使用的小伙伴可以先去看看jest的大概使用方法,jest测试框架官方网址:https://jestjs.io/docs/getting-started

下面我们在我们的项目中进行集成jest框架,集成过程也是比较简单的。

  • 安装jest三方库
npm install --save-dev jest
  • package.json中,在scripts对象下配置脚本

项目路径下,package.json中的scripts对象下配置脚本测试脚本,方便我们直接使用 npm 进行执行。

"test": "jest",
  • 创建测试文件 csdnJest.test.js

项目目录下创建文件,命名为 csdnJest.test.js ,同时将下面的内容添加到文件中。

const puppeteer = require('puppeteer');let browser;
let page;beforeAll(async () => {browser = await puppeteer.launch({headless: false,slowMo: 80,defaultViewport: null, // 不使用默认的固定大小,直接填满浏览器});page = await browser.newPage();page.on('dialog', async dialog => {console.log(dialog.message());await dialog.dismiss();await dialog.dismiss();await dialog.dismiss();});
});afterAll(() => {browser.close();
});test('open csdn page', async () => {await page.goto('https://www.csdn.net/');await page.waitForSelector('a.title');
});test('expect h3 is 头条', async () => {await page.waitForSelector('h3');const text = await page.$eval('h3', el => el.textContent);expect(text).toBe('头条');
});

在上述代码中,我们创建了一个测试套件,并在 beforeAllafterAll 钩子函数中创建和关闭浏览器。

总共有两个小的测试用例:

  • 测试用例 ‘open csdn page’
    我们使用page.goto方法打开了一个网页 https://www.csdn.net/ ,并等待页面中选择器 ‘a.title’ 的出现。

  • 测试用例 ‘expect h3 is 头条’
    我们等待h3标签的出现,并且获取到h3标签的内容,然后我们使用 expect 断言判断页面h3的内容是 头条

运行脚本,查看实际表现:

npm run test

在这里插入图片描述

在运行过程中,Puppeteer将自动控制Chrome浏览器,打开指定的网页,并执行我们的测试用例。运行结束后,我们将在命令行中看到测试用例的执行结果。

我们能够看到结果中,所有的测试用例都是通过的。

三、支持其他的几种

当然,Puppeteer不仅仅支持jest集成,其实应该能够集成其他几种node类型的测试框架,有兴趣的同学可以自行去尝试下集成到自己的项目中进行使用。
比如以下一些常见的框架:

  • Jasmine
  • Jest
  • Mocha
  • Node Test Runner
四、总结

通过结合Puppeteer和Jest进行自动化端到端测试,我们可以有效地测试和验证Web应用程序的各种功能,从而提高测试效率和测试质量。有兴趣的小伙伴也可以去试试其他支持的测试框架集成。


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

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

相关文章

MyBatis(中)

目录 1、动态sql: 1、if标签: 2、where标签: 3、 trim标签: 4、set标签: 5、choose when otherwise: 6、模糊查询的写法: 7、foreach标签: (1)批量删除…

施耐德Unity通过Modbus控制变频器

硬件设备 PLC: Unity Premium (CPU:TSX P57154) 通讯卡: TSX SCP 114 连接电缆: TSX SCP CM 4030 VSD: ATV 58 硬件连接 Unity Premium (CPU: TSX P57154)本身不带Modbus接口,因此,采用TSX SCP 114扩展一个Modbus接口。TSX SCP 114是一个RS-485接…

NumPy 基础知识

数据类型 数组类型之间的转换 NumPy支持比Python更多种类的数字类型。本节显示了哪些可用,以及如何修改数组的数据类型。 支持的原始类型与 C 中的原始类型紧密相关: Numpy 的类型C 的类型描述np.boolbool存储为字节的布尔值(True或False)np.bytesigned char平台定义np.…

【已解决】No Python at ‘D:\Python\python.exe‘

起因,我把我的python解释器,重新移了个位置,导致我在Pycharm中的爬虫项目启动,结果出现这个问题。 然后,从网上查到了这篇博客: 【已解决】No Python at ‘D:\Python\python.exe‘-CSDN博客 但是,按照上述…

【Docker】命令使用大全

【Docker】命令使用大全 目录 【Docker】命令使用大全 简述 Docker 的主要用途 基本概念 容器周期管理 run start/stop/restart kill rm pause/unpause create exec 容器操作 ps inspect top attach events logs wait export port 容器 rootfs 命令 c…

SpringSecurity源码学习三:认证

目录 1. 认证步骤2. 认证2.1 WebSecurityConfigurerAdapter配置介绍2.2 使用UsernamePasswordAuthenticationFilter登录认证2.2.1 UsernamePasswordAuthenticationFilter源码2.2.1.1 ProviderManager源码 2.2.2 认证流程总结 2.3 自定义登录认证代码示例2.3.1 认证流程总结 1. …

php的加密方式汇总

一、单列散列函数加密 1.md5()一般用于密码的不可逆加密 2.password_hash() //密码加密 $password 123456; $passwordHash password_hash($password,PASSWORD_DEFAULT,[cost > 12] );//密码验证 if (password_verify($password, $passwordHash)) {//Success } else {//…

8.Covector Transformation Rules

上一节已知,任意的协向量都可以写成对偶基向量的线性组合,以及如何通过计算基向量穿过的协向量线来获得协向量分量,且看到 协向量分量 以 与向量分量 相反的方式进行变换。 现要在数学上确认协向量变换规则是什么。 第一件事:…

前端小案例 | 一个带切换的登录注册界面(静态)

文章目录 &#x1f4da;HTML&#x1f4da;CSS&#x1f4da;JS &#x1f4da;HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sc…

紫光同创FPGA实现UDP协议栈网络视频传输,基于YT8511和RTL8211,提供4套PDS工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案紫光同创FPGA精简版UDP方案紫光同创FPGA带ping功能UDP方案 3、设计思路框架OV7725摄像头配置及采集OV5640摄像头配置及采集UDP发送控制视频数据组包数据缓冲FIFOUDP协议栈详解RGMII转GMII动态ARPUDP协议IP地址、端口…

postgresql|数据库|恢复备份的时候报错:pg_restore: implied data-only restore的处理方案

一&#xff0c; 前情回顾 某次在使用pg_dump命令逻辑备份出来的备份文件对指定的几个表恢复的时候&#xff0c;报错pg_restore: implied data-only restore 当然&#xff0c;遇到问题首先就是百度了&#xff0c;但好像没有什么明确的解决方案&#xff0c;具体的报错命令和…

SpringData MongoDB学习总结

目录 一、简介 二、搭建 三、操作 &#xff08;1&#xff09;、集合操作 &#xff08;2&#xff09;、文档操作 相关注解 POJO 添加文档 查询文档 更新文档 删除文档 聚合操作 一、简介 NoSql数据库 键值对key-value 存储redis用户缓存&#xff0c;用户信息回话&a…

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— Positional Encoding(一)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

kettle应用-从数据库抽取数据到excel

本文介绍使用kettle从postgresql数据库中抽取数据到excel中。 首先&#xff0c;启动kettle 如果kettle部署在windows系统&#xff0c;双击运行spoon.bat或者在命令行运行spoon.bat 如果kettle部署在linux系统&#xff0c;需要执行如下命令启动 chmod x spoon.sh nohup ./sp…

C#控制台程序读取输入按键非阻塞方式

参考内容&#xff1a; http://www.dutton.me.uk/2009-02-24/non-blocking-keyboard-input-in-c/ 相关代码&#xff1a; while (true) {if (Console.KeyAvailable){ConsoleKeyInfo key Console.ReadKey(true);switch (key.Key){case ConsoleKey.F1:Console.WriteLine("Y…

【计算机网络笔记】分组交换 vs 电路交换

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 系列文章目录 以一个具体的场景为例&#xff1a;N个用户共享这个1M bps链路。假设每一个用户活动时需要的链路带宽是100kb/s&#…

视频监控系统/安防视频平台EasyCVR广场视频细节优化

安防视频监控系统/视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频汇聚平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;可实现视频监控直播、视频轮播、…

Maven 使用教程(二)

一、如何创建JAR并将其安装在本地存储库中&#xff1f; 制作JAR文件非常简单&#xff0c;可以通过执行以下命令来完成&#xff1a; mvn package现在可以查看${project.basedir}/target目录&#xff0c;您将看到生成的JAR文件。 现在&#xff0c;您需要将生成的工件&#xff0…

华为9.20笔试 复现

第一题 丢失报文的位置 思路&#xff1a;从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …

spring boot Rabbit高级教程

消息可靠性 生产者重试机制 首先第一种情况&#xff0c;就是生产者发送消息时&#xff0c;出现了网络故障&#xff0c;导致与MQ的连接中断。 为了解决这个问题&#xff0c;SpringAMQP提供的消息发送时的重试机制。即&#xff1a;当RabbitTemplate与MQ连接超时后&#xff0c;…