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自动化测试框架实战
目前上新期,八折优惠哦~~