当前位置: 首页 > news >正文

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拥有更长的历史,社区和资料极其庞大,在处理某些极其陈旧的系统时可能有特殊方案。

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

http://www.jsqmd.com/news/334253/

相关文章:

  • 小白也能看懂系列——安全编码(2)
  • P14170 二分图最大匹配期望 学习笔记
  • Selenium + Pytest + Allure的组合做web ui测试
  • 2026年高端全屋定制厂家推荐,不容错过的五大品牌 - 睿易优选
  • 基于PLC工厂的锅炉水位自动控制系统的设计与实现
  • 2026最新陕西婚恋平台五大甄选:深耕本土精准脱单,红娘沈大妈 Real 真心婚恋领跑西北 - 深度智识库
  • Cypress
  • Linux自学教材02
  • Claude Code | Rules 最佳配置案例(中文)
  • Oracle数据库操作基础2
  • 2026年版|大模型企业运营落地全流程(小白/程序员必收藏,从入门到进阶)
  • 基于PLC的电梯控制系统的设计
  • 复现论文《Fair Semi-distributed Resource Allocation Scheme over Relay-Enhanced OFDMA Networks》的代码实现
  • 20260202
  • 收藏!一文掌握大语言模型原理及其医疗领域应用挑战
  • 【收藏备用|2026年版】未来10年,什么领域的职业发展潜力最大?
  • https://blog.csdn.net/2401_84760322/article/details/149808483?spm=1001.2014.3001.5502
  • 基于逆变器风电和储能设备的过电流继电器最优协调研究复现
  • 基于PLC的钢板定长剪切自动控制系统设计
  • 基于Java的旅游资源网站平台设计与实现(11874)
  • 【5G通信】基于matlab 5G毫米波UDN中带有位置感知波束成形的链路级模型干涉评估【含Matlab源码 15044期】
  • 基于PLC的风电控制系统
  • 基于Java的商店会员系统(11875)
  • 工业触摸屏:汇顶科技Goodix GT系列触摸屏控制器
  • 基于PLC的工业机械手的控制
  • 基于Java的流浪动物收养系统(11872)
  • ARM 汇编器中的伪指令
  • MySQL的MVCC
  • 【干扰仿真】基于matlab BPSK系统性能转发式干扰影响【含Matlab源码 15037期】
  • 基于java的客户管理系统的设计与实现(11871)