pytest+playwright落地实战大纲

前言

很久没有更新博客,是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结,开个帖子介绍下这门课程(硬广, o(〃^▽^〃)o)

课程放在CSDN学习频道, 欢迎关注~

PyTest+PlayWright自动化测试框架实战

请添加图片描述

为什么是Playwright?

请添加图片描述

Playwright,相比一些老牌的工具,它的诞生时间并不长,2020年才发布了第一个正式版本,当然在这之前已经有beta版推出。正因为工具比较新,所以也就有了后发优势。
而且Playwright出自微软,背靠大厂,各方面支持力度也很强,所以目前在web自动化测试工具中,上升的势头非常强劲,普遍被认为是能代替传统的web自动化霸主Selenium的新生代自动化测试工具。

当然,这个工具能受到欢迎,除了因为它是大厂出品,自然也离不开其自身的一些显著的明显优点。

  • Playwright的开发团队,是来自另一款工具puppeteer(Google基于chrome推出的web自动化工具)的核心成员。可以说Playwright是建立在puppeteer基础上的。而puppeteer,本身一度被认为是后selenium时代的web自动化三驾马车之一,所以Playwright可以说是站在巨人肩膀上,它不仅兼容了puppeteer的很多优点,还优化了puppeteer本身的一些不足,更加完善。

  • puppeteer有一个很大的约束就是它只支持chrome浏览器,而playwright则内建了对多种主流浏览器的支持,除了chrome、edge,也支持firefox、safari,能满足web自动化的主流浏览器覆盖

  • playwright支持不同的编程语言实现,除了像puppeteer原先支持的node.js之外,也可以支持java、python, 当然还有微软自己的.net。

  • Palywright还支持更多的一些扩充高级功能。

官网对playwright优势的介绍
  • 多浏览器、跨平台、多语言、以及对移动端web的支持。

  • 弹性框架,能主动规避很多导致UI自动化不够稳定的问题。包括自动等待、动态校验、过程跟踪这样一些特性

  • 更匹配现代浏览器的架构,是进程级的隔离,使用上线文的概念区分不同的测试场景,且互不干扰。还有像强化对Frame、shadow dom这样一些比较特殊的前端自动化处理

  • 更充分的隔离以及更快的执行速度,Playwright的上下文机制可以保证浏览器进程基本的隔离以及毫秒级的创建速度。执行速度的优势也得益于playwright基于websocket协议这种长连接、全双工、双向通信的通信协议。

  • 各种辅助工具,包括代码的自动化生成、录制,页面元素的定位辅助以及强大的信息跟踪工具。

工作原理

请添加图片描述

Playwright是基于Puppeteer之上的优化产物,它的实现原理可以说是puppeteer跟Selenium优点的综合。Playwright内建了一个基于Node.js实现的server模块,这个模块和基于各种不同语言的客户端程序之间,通过websocket协议来进行连接,通信,可以发挥websocket长连接、双向工作的优势。

然后再通过CDP协议对chromium内核的浏览器进行控制和自动化驱动,这里Playwright也支持firefox和webkit(其实是Playwright本身实现了针对这两款浏览器的CDP协议,这里叫CDP plus协议)。

还有个区别,Playwright其实是把浏览器版本内建在工具之中,这样就屏蔽了因浏览器版本不同导致的差异性。

测试框架在自动化测试工具体系中处于什么位置?

我们说到自动化,经常提到测试脚本、自动化工具、框架、平台,那么这些不同的概念到底有什么不一样,我们要介绍的框架,在整个自动化测试体系中,实际是处于什么位置呢?

可以用下面这个分层图来概括:

请添加图片描述

  • 脚本层面。 更多是可以通过一些测试脚本,来完成一些自动化测试任务或测试辅助工具。包括我们使用各种编程语言编写出来的测试代码,或者操作系统的一些shell、批处理脚本等,都属于脚本层面。脚本是自动化测试测试逻辑的直接体现。包括很多自动化测试录制回放工具,把手工操作,转换为测试脚本,完成的都是这个层面的工作。是自动化测试最基础的部分。

  • 工具层面。 这一层完成的是对脚本的驱动,脚本具体怎么驱动程序执行,怎么进行测试动作和结果的判断? 这些是自动化测试工具要完成的工作。不同类型的测试通常有不同的工具。我们经常说到的Selenium, Appium,Postman,QTP、Jmeter等等,包括Playwright,主要都可以理解为测试工具。可以做Web、移动应用,接口,性能等等不同类型的自动化测试。

  • 框架层面,它解决的是自动化测试的组织,把一整套自动化测试用例组织起来。包括用例的选择,执行过程的控制,结果的汇总呈现等。框架层面,最主要的是会支持不同的测试工具,可以对不同类型的自动化测试进行整合。比较常见的测试框架,比如Pytest、Junit、Robotframework等,都属于优秀的自动化测试框架。 像Junit、Pytest,开始是面向单元测试的测试框架,PyTest是借鉴Junit发展而来,但并不是说他们的应用范围就是单元测试,集成测试、系统测试也同样应用。就像自动化测试不属于某一个具体的测试阶段一样,我们也不要把某个测试工具或测试框架和测试的阶段混淆,这是两个不同维度的概念。

  • 平台层面。自动化测试平台是在更高层面来组织自动化测试。要实现测试任务的调度、测试环境的管理,测试数据、测试脚本等测试资产的管理和分配,包括和其他的研发流程实现互通,比如bug的管理、代码管理、文档管理、配置管理等与各种其他研发工具的互通和整合。

课程大纲

我的这门课程主要是结合Pytest和Playwright工具的系统介绍,学习如何搭建起一个可落地使用的自动化测试框架,包括和持续集成系统的集成。

请添加图片描述

感兴趣的小伙伴,可以关注哈,链接如下:

PyTest+PlayWright自动化测试框架实战

目前上新期,八折优惠哦~~

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

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

相关文章

鸿蒙系统 将工程HarmonyOS变成OpenHarmony

DevEco Studio软件创建工程后需要修改两个地方: 修改第二个build-profile.json5文件 将原先内容: {"app": {"signingConfigs": [],"products": [{"name": "default","signingConfig": &q…

Matlab总提示内存不够用,明明小于电脑内存

目录 前言情况1(改matlab最大内存限制)情况2(重启电脑)情况3 前言 在使用matlab中,有时候需要占用的内存并没有超过电脑内存依旧会报错,提示内存不够用,可以尝试下面几种方法,总有一…

[操作系统] 进程的调度

进程切换概念 时间⽚:当代计算机都是分时操作系统,没有进程都有它合适的时间⽚(其实就是⼀个计数 器)。时间⽚到达,进程就被操作系统从CPU中剥离下来。 死循环是如何运行? 当一个进程代码为死循环,它并不会一直占据C…

免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL),收不到通知请将我点击星标!“ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

【2025】拥抱未来 砥砺前行

2024是怎样的一年 2024在历史画卷上是波澜壮阔的一年,人工智能的浪潮来临,涌现出无数国产大模型。 22年11月ChatGPT发布,它的出现如同在平静湖面上投下一颗巨石,激起了层层波澜,短短五天用户数就达到了100万&#xff0…

Java设计模式—观察者模式

观察者模式 目录 观察者模式1、什么是观察者模式?2、观察者模式优缺点及注意事项?3、观察者模式实现?4、手写线程安全的观察者模式? 1、什么是观察者模式? - 实例:现实生活中很多事物都是依赖存在的&#x…

鸿蒙开发中的骨架图:提升用户体验的关键一环

大家好,我是小 z,今天要给大家分享一个提升用户体验的超实用技巧 —— 骨架图🎯 文章目录 一、什么是骨架图二、骨架图的作用三、鸿蒙开发中实现骨架图的方法1. 利用 opacity 奠定视觉基础2. animateTo 驱动动态变化3. 二者协同触发与展示 四…

vue+高德API搭建前端Echarts图表页面

利用vue搭建Echarts图表页面,在搭建Echarts图表中,如果搭建地理地形图需要准备一些额外的文件,地理json文件和js文件,js文件目前在网上只能找省一级的,json文件有对应的省市县,js文件和json文件对应的也是不…

我在广州学Mysql 系列——触发器的使用

ℹ️大家好,我是练小杰,这周是春节前的最后一周了,现在一双手数都能数得过来了!! 本播客将学习MYSQL中触发器的相关概念以及基础命令~~ 回顾:👉【MYSQL视图相关例题】 数据库专栏👉【…

大数据,Hadoop,HDFS的简单介绍

大数据 海量数据,具有高增长率、数据类型多样化、一定时间内无法使用常规软件工具进行捕捉、管理和处理的数据集 合 大数据的特征: 4V Volume : 巨大的数据量 Variety : 数据类型多样化 结构化的数据 : 即具有固定格式和有限长度的数据 半结构化的数据 : 是…

如何用3个月零基础入门网络安全?_网络安全零基础怎么学习

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前 言 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全,实现自己的“黑客梦”。文章的宗旨是: 1.指出一些自学的误区 2.提供…

微服务与docker

准备工作 在课前资料中给大家提供了黑马商城项目的资料,我们需要先导入这个单体项目。不过需要注意的是,本篇及后续的微服务学习都是基于Centos7系统下的Docker部署,因此你必须做好一些准备: Centos7的环境及一个好用的SSH客户端装好Docker会使用Docker如果是学习过上面Doc…

(7)(7.2) 围栏

文章目录 前言 1 通用设置 2 围栏类型 3 破坏栅栏行动 4 使用 RC 通道辅助开关启用栅栏 5 自动高度规避 6 在任务规划器中启用围栏 7 用于遥控飞行训练 8 MAVLink 支持 前言 ArduPilot 支持基于本机的圆柱形(“TinCan”)和多边形和/或圆柱形、…

uniapp——App 监听下载文件状态,打开文件(三)

5 实现下载文件并打开 这里演示,导出Excel 表格 文章目录 5 实现下载文件并打开DEMO监听下载进度效果图为什么 totalSize 一直为0? 相关Api: downloader DEMO 提示: 请求方式支持:GET、POST;POST 方式需要…

mybatis的多对一、一对多的用法

目录 1、使用VO聚合对象(可以解决这两种情况) 多对一: 一对多: 2、非聚合的多对一做法: 3、非聚合的一对多做法: 1、使用VO聚合对象(可以解决这两种情况) 当我需要多对一、一对…

Vscode:问题解决办法 及 Tips 总结

Visual Studio Code(简称VSCode)是一个功能强大的开源代码编辑器,广泛用于各种编程语言和开发场景,本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法,使用过程中的技巧 文章目录 扩展安装失败调试配…

MySQL 窗口函数

MySQL 窗口函数 1,窗口函数 1.1,什么是窗口函数1.2,基本语法 2,函数详解 2.1,聚合函数2.2,排序函数2.3,偏移函数2.4,值函数 3,进阶用法 1,窗口函数 1.1&am…

基于vite+vue3+mapbox-gl从零搭建一个项目

下面是基于 Vite、Vue 3 和 Mapbox GL 从零搭建一个项目的完整步骤,包括环境搭建、依赖安装、配置和代码示例。 文章目录 1. 初始化项目2. 安装 mapbox-gl 依赖3. 配置 Mapbox Access Token4. 实现地图组件5. 在 App.vue 中使用地图组件6. 启动开发服务器7. 添加自定…

Data Filtering Network 论文阅读和理解

目录 一、TL;DR 二、Introduction 2.1 apple的结论 2.2 业界做法: 2.3 我们的做法(Apple) 2.4 如何获取好的DFN 三、未完待续(这周出去购物了,下周继续补充) 一、TL;DR 核心…

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo updatehelm pull bitnami/mysql 解压后编辑values.yaml文件,修改如下(storageclass已设置默认类) 117 ## param architecture MySQL archit…