news 2026/6/10 16:21:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 是一个成熟、稳定、灵活且强大的组合,特别适合需要在复杂场景、多浏览器环境下进行自动化测试,并且希望测试脚本易于维护、报告清晰易懂的中大型项目。选择它,通常是选择了一个经过时间考验、风险较低的可靠方案。

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

基于PLC的电梯控制系统的设计

基于PLC的电梯控制系统的设计 第一章 绪论 电梯作为高层建筑的核心垂直运输设备,其控制系统的稳定性、安全性与高效性直接关系到人员出行体验和生命安全。传统电梯多采用继电器-接触器控制模式,存在逻辑修改困难、故障率高、维护成本高、响应速度慢等问…

作者头像 李华
网站建设 2026/6/10 15:04:13

【Docker进阶-01】Docker隔离原理与可视化界面-Portainer

【Docker进阶-01】Docker隔离原理与可视化界面-Portainer Docker架构容器与虚拟机Docker隔离原理可视化界面-Portainer /etc/docker/daemon.json 是Docker的核心配置文件。 Docker架构 Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。 Docker使用…

作者头像 李华
网站建设 2026/6/10 15:06:14

AI + 质量:高效工作新方法

当 AI 技术席卷各行各业,质量工作这个依赖严谨性、专业性和流程化的领域,正经历深刻变革。从文书编写到风险评估,AI 以多样化场景打破传统效率瓶颈,成为质量人的 “高效战友”。一、AI 直击质量工作痛点,覆盖全流程场景…

作者头像 李华
网站建设 2026/6/10 14:55:28

逐际动力加码具身智能大小脑融合技术,闵行推具身智能产业新政,特斯拉扩机器人产能,Figure AI拓人形机器人家用场景

逐际动力完成2亿美元B轮融资,加码具身智能大小脑融合技术国内具身智能龙头企业逐际动力宣布完成2亿美元B轮融资,国内外机构及产业资本联合加码,老股东持续跟投,融资资金将重点投入本体硬件制造、小脑基础模型及具身智能操作系统研…

作者头像 李华
网站建设 2026/6/10 14:51:14

力扣1046和1049学习笔记

1.概要碎石头问题,拿两个石头碰撞,抵消共同质量的部分,1046是每次选最重两个,1049是任意选,让质量尽可能小。2.大根堆每次维护最重,如果直接排序的话复杂度过高,因此可以用大根堆,它…

作者头像 李华
网站建设 2026/6/10 14:51:26

cpp对象模型学习笔记1.1-2.8

1.什么是cpp对象模型cpp对象模型是指编译器实际上是怎么实现的c的对象,比如构造函数、析构函数、虚函数、继承关系。2.构造函数在学cpp的时候一般会有这样的知识被告知,当我们没有主动写任何类的构造函数的时候,编译器会为我们合成一个默认的…

作者头像 李华