news 2026/9/23 19:08:48

Playwright + Pytest + Allure的组合做web ui测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Playwright + Pytest + Allure的组合做web ui测试

1. 它是什么

可以将这个组合理解为一个针对网站界面进行自动化检查的协作团队。每个成员有明确分工:

  • Playwright负责操作浏览器,模拟真人点击、输入、滚动等所有行为。

  • Pytest是测试框架,负责组织和运行这些检查任务,并判断结果是对是错。

  • Allure是报告生成器,负责将检查过程和结果整理成清晰、可视化的文档。

这就好比装修后的一次系统验收:Playwright是逐个检查门窗、水电的师傅,Pytest是拿着清单指挥检查的项目经理,Allure则是最后出具详细验收报告的分析师。

2. 它能做什么

这个组合主要完成以下工作:

  • 模拟用户操作:自动打开浏览器,访问网页,完成登录、填写表单、跳转页面等完整操作流程。

  • 检查与验证:在执行过程中,自动核对页面内容是否正确,元素是否存在,功能是否正常。例如,提交订单后,检查是否跳转到了支付成功页面。

  • 处理复杂场景:能测试多种浏览器(Chrome、Firefox、Safari),适应网络不稳定、弹窗出现、文件上传下载等情况。

  • 生成清晰报告:自动生成结构化的测试报告,用图表展示通过了多少、失败了哪些,并附上截图和操作步骤,精确指出问题所在。

3. 怎么使用

使用过程可以比作按照一个固定菜谱做菜,步骤明确:

a.准备环境
安装必要的工具包,通常通过一行命令即可完成。

b.编写测试脚本
用Python代码写下测试步骤。例如,测试登录功能:

python

def test_login(page): page.goto("https://example.com/login") page.fill("#username", "test_user") page.fill("#password", "password123") page.click("button[type='submit']") assert page.is_visible("text=Welcome")

这段代码表示:打开登录页,输入用户名密码,点击登录,然后断言页面上应该出现“Welcome”字样。

c.运行测试
在命令行中执行一条指令,Pytest就会自动找到所有测试脚本并运行。可以指定运行单个测试或一批测试。

d.查看报告
测试结束后,Allure会生成一个HTML报告。打开这个报告文件,就能在浏览器里看到树状结构的测试结果、成功率、耗时以及每个失败步骤的截图和日志。

4. 最佳实践

遵循一些好的习惯能让测试更稳定、高效:

  • 结构清晰:像整理书籍一样,将测试代码、页面元素定位、测试数据分开存放。页面元素(如按钮、输入框)单独管理,一旦界面改动,只需更新一个地方。

  • 选择可靠的定位器:优先使用不会轻易改变的属性来定位页面元素,例如给关键元素加上专门的测试属性,这比依赖容易变化的CSS样式更稳定。

  • 明智地处理等待:避免使用固定的睡眠等待。应使用工具提供的智能等待方法,让它自动等待元素出现或可操作,这样测试速度更快、更可靠。

  • 使用夹具管理资源:利用Pytest的夹具功能来统一管理浏览器启动、用户登录等重复操作,让测试脚本更简洁。

  • 并行测试:利用该组合对并行运行的良好支持,同时开启多个浏览器实例执行不同测试,能大幅缩短总体执行时间。

  • 将检查点分散:在一个流程中,在关键步骤后都加入适当的断言,而不是全部集中在最后。这有助于更快定位出问题的具体环节。

5. 和同类技术对比

与之前或同类常用的组合(如 Selenium + unittest/Java + ExtentReports)相比,这个组合有几个显著区别:

  • 执行速度与稳定性:Playwright的架构较新,与浏览器通信更高效。它自动等待的策略减少了因网络或渲染速度导致的随机失败,测试比基于旧版WebDriver的工具更稳定。

  • 编写便捷性:Playwright的API设计直观,用少量代码就能完成复杂操作(如下载文件、拦截请求)。Pytest的语法也比一些Java测试框架更简洁。

  • 多浏览器支持:Playwright直接为三大浏览器提供了一致的API,无需为不同浏览器寻找和配置不同的驱动,开箱即用。

  • 报告能力:Allure报告在信息的丰富度、可视化以及历史趋势展示上,通常比一些基础的报告库更为专业和详细。

  • 生态与调试:Playwright提供了强大的调试工具,如录制操作生成代码、查看时间线追踪。而Selenium拥有更长的历史,社区和资料极其庞大,在处理某些极其陈旧的系统时可能有特殊方案。

总的来说,这个组合是一个现代、高效且功能全面的选择,特别适合新项目或寻求提升测试效率和可靠性的团队。对于已经深度绑定旧有技术栈且运行良好的项目,迁移则需要评估改造成本与收益。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 15:59:57

基于java的客户管理系统的设计与实现(11871)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/9/18 22:56:28

Linux常用目录有哪些?

Linux目录是Linux操作系统中的文件系统结构,它由根目录开始,所有的文件和目录都位于这个根目录下,那么Linux常用目录有哪些?具体请看下文。 Linux系统中常用的目录包括: /bin:存放基本的用户命令和系统工具&#xff0…

作者头像 李华
网站建设 2026/9/21 13:48:02

从千里到阶跃,38岁的印奇仍在追梦

文|魏琳华 刘俊宏编|王一粟2023年秋天,吉利控股集团董事长李书福给了时任旷视科技CEO的印奇一个无法拒绝的选择。彼时的印奇,正处于旷视科技几次提交招股书都不能如愿上市的焦虑中。印奇一门心思想的是,如何能让旷视的…

作者头像 李华
网站建设 2026/9/23 18:35:48

[todo]try catch no | result yes

try/catch的异常抛出是隐式失控的错误流,把错误处理和正常逻辑强行割裂,还容易漏处理 Rust/Haskell的类型化错误封装(Result/Maybe)是显式把错误纳入类型系统,让错误处理成为编译期强制的逻辑分支,从根源避…

作者头像 李华
网站建设 2026/9/19 1:23:05

TBarCode SDK 11.17.4 -2025-10-15 版本

TBarCode SDK - 条形码生成器软件--概述微软办公软件/365条形码与网络面向开发者数据表历史 TEC-IT 的条形码 SDK 为软件开发人员和Microsoft Office用户提供条形码打印功能。借助这款条形码生成器软件,您可以创建并打印工业和商业中使用的所有条形码符号&#xff0…

作者头像 李华
网站建设 2026/9/23 14:53:20

网安毕设新颖的课题建议

文章目录🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取?1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢?🚩2 选题概览🚩 3 项目概览题目1 : 图像隐写算法研究与…

作者头像 李华