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

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

1. 它是什么

可以把它理解为一套用于检查网站功能是否正常的自动化工具组合。想象一下,你需要每天重复测试一个网站的登录功能,手动操作既枯燥又容易出错。这套组合工具就是为了解决这类问题而存在的。

  • Selenium是这个组合的核心。它就像一个能编程控制的“虚拟用户”,可以按照写好的指令,在浏览器中完成点击、输入、跳转等所有真实用户能做的操作。

  • Pytest是一个测试框架。它提供了一个清晰、有条理的方式来组织和运行你的测试指令(即测试用例)。它规定了测试文件、测试函数该怎么写,并负责把测试指令一个一个地交给Selenium去执行。

  • Allure是一个报告生成工具。当Pytest运行完所有测试后,会生成一堆原始数据。Allure的作用就是把这些数据处理成一份可视化、非常详细漂亮的HTML测试报告,让人一眼就能看清哪些测试通过了,哪些失败了,失败的具体原因和步骤是什么。

简单说,Selenium负责“动手操作”,Pytest负责“管理调度”,Allure负责“总结汇报”

2. 他能做什么

这套组合主要服务于Web应用的自动化功能测试,尤其擅长处理需要反复执行、覆盖多种场景的测试任务。

  • 模拟核心用户操作:自动完成一系列连续操作,例如:打开浏览器 -> 访问购物网站 -> 登录账户 -> 搜索商品 -> 加入购物车 -> 结算。这可以用来验证整个业务流程是否畅通。

  • 执行重复性回归测试:每当开发人员修改了网站代码,都可以自动运行一遍预设的测试用例,快速检查新改动有没有把原来正常的功能弄坏。这比人工重复测试效率高得多。

  • 进行多浏览器或多环境测试:可以配置脚本在Chrome、Firefox等不同浏览器上运行同一套测试,确保网站在主流浏览器上表现一致。

  • 生成易于分析的报告:Allure报告不仅能展示成功失败,还能附带每个步骤的截图、错误日志,甚至测试代码片段。当测试失败时,这份报告能帮助快速定位问题发生在哪个操作步骤,大大缩短排查时间。

3. 怎么使用

使用过程遵循一个标准的流程:

  1. 搭建环境:在电脑上安装Python编程语言,然后通过Python的包管理工具安装Selenium、Pytest和Allure相关的库。

  2. 编写脚本

    • 使用Selenium提供的方法编写浏览器操作指令,比如find_element(查找页面元素)、click(点击)、send_keys(输入文字)。

    • 用Pytest的规则来组织这些指令,通常一个测试函数对应一个具体的测试场景(如“测试登录成功”)。

    • 在脚本中关键位置(如验证登录是否成功)加入“断言”,这是判断测试通过与否的标准。

  3. 处理页面加载:这是一个关键点。因为网页加载速度不定,需要在脚本中设置“等待”,让Selenium等页面元素加载完成后再进行操作,避免因页面未就绪而导致的测试失败。

  4. 运行测试:在命令行中执行一个简单的Pytest命令,它就会自动发现并运行所有写好的测试用例。

  5. 生成报告:测试运行后,先通过一个命令让Allure从测试结果数据中生成报告文件,再通过另一个命令打开一个本地网页来浏览这份详细的报告。

4. 最佳实践

遵循一些好的工作习惯,可以让这套工具更稳定、更易维护:

  • 使用页面对象模型:不要将查找页面元素(如登录按钮、输入框)的代码和具体的测试操作代码混在一起。应该为每个网页(或页面重要部分)创建一个单独的类,所有对这个页面的操作和元素定位都封装在里面。测试脚本只调用这个类提供的方法。这样,如果页面UI改了,只需更新这一个类的代码,所有测试用例都不受影响。

  • 采用可靠的等待策略:避免使用固定的“睡眠”时间。优先使用Selenium提供的“显式等待”,让它智能地等待某个特定条件成立(如元素可点击)后再继续,这样测试既稳定又高效。

  • 保持测试用例的独立性:每个测试用例应该能单独运行,且不依赖其他测试用例产生的数据。执行顺序不应影响结果。通常的做法是在每个测试开始前准备干净的测试数据(如一个新注册的账号),测试结束后清理数据。

  • 利用数据驱动:将测试数据(如不同的用户名、密码组合)从测试脚本中分离出来。Pytest有很好的支持,可以用一组数据来驱动同一个测试逻辑运行多次,从而轻松覆盖多种测试场景。

  • 合理使用Pytest的特性:用fixture来管理测试的通用前置和后置操作(如启动/关闭浏览器)。用mark标签给测试用例分类(如“冒烟测试”、“登录模块”),方便选择性地运行某一组测试。

5. 和同类技术对比

在Web UI自动化测试领域,还有其他一些流行的工具或框架:

  • 与纯Selenium脚本对比:单独使用Selenium写脚本就像只有建筑材料。结合Pytest后,获得了项目管理和施工蓝图(测试框架);加上Allure,则拥有了专业的验收和展示团队(报告)。组合后的可维护性、组织性和报告能力远胜于纯脚本。

  • 与Cypress对比:Cypress是较新的现代化测试框架,它架构不同,测试代码直接在浏览器中运行,执行速度通常更快,调试更直观。而Selenium通过驱动真实浏览器,更贴近真实用户环境,且支持更多编程语言(Java, Python, C#等)和浏览器。Cypress在纯JavaScript/TypeScript生态中集成度更高,Selenium+Pytest组合则在Python生态中更灵活,适合与其他Python工具(如数据分析库)集成。

  • 与Playwright对比:Playwright是后起之秀,由微软开发。它和Selenium一样支持多语言多浏览器,但设计更现代,内置了自动等待、网络拦截等强大功能,编写脚本有时更简洁。Selenium的优势在于其历史悠久、社区庞大、资料丰富、极其稳定,是企业中经过长期验证的选择。

简单总结:Selenium + Pytest + Allure 是一个成熟、稳定、灵活且强大的组合,特别适合需要在复杂场景、多浏览器环境下进行自动化测试,并且希望测试脚本易于维护、报告清晰易懂的中大型项目。选择它,通常是选择了一个经过时间考验、风险较低的可靠方案。

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

相关文章:

  • 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)
  • CF2092C 学习笔记
  • AI + 质量:高效工作新方法
  • 基于Java的旅游网站的设计与实现(11873)