news 2026/2/25 21:32:33

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/2/25 1:24:59

iSolarBP Pro:赋能设计院,如何用数智化引擎重构核心竞争力?

在“双碳”目标驱动下,分布式光伏市场爆发式增长,设计院作为产业链的关键一环,却面临着“项目多、时间紧、要求高、利润薄”的多重压力。传统依赖CAD手工绘图、经验估算的模式,已难以适应新形势下的市场竞争。iSolarBP Pro专业版&…

作者头像 李华
网站建设 2026/2/24 17:32:08

基于PLC的风电控制系统

基于PLC的风电控制系统设计与实现 第一章 绪论 风力发电作为清洁能源利用的核心形式,其控制系统的稳定性、精准性直接决定风机的发电效率、设备寿命与运行安全。传统风电控制多采用专用控制器,存在拓展性差、故障诊断能力弱、对复杂风况的自适应调节不足…

作者头像 李华
网站建设 2026/2/25 1:34:18

基于Java的旅游网站的设计与实现(11873)

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

作者头像 李华
网站建设 2026/2/22 10:43:37

基于Java的商店会员系统(11875)

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

作者头像 李华
网站建设 2026/2/24 13:15:21

https://blog.csdn.net/2401_84760322/article/details/149808483?spm=1001.2014.3001.5502

渗透测试与入侵的区别 渗透测试:以安全为基本原则,通过攻击者以及防御者的角度去分析目标所存在的安全隐患以及脆弱性,以保护系统安全为最终目标。 入侵:通过各种方法,甚至破坏性的操作,来获取系统权限以…

作者头像 李华
网站建设 2026/2/18 4:09:51

阿里云携手模思智能构建一站式多模态数据处理平台

模思智能简介 上海模思智能科技有限公司(MOSI Intelligence)成立于2024年11月,是国内深度情境智能领航者,依托深厚的学术积淀与卓越的工程落地能力,致力于构建下一代全感官人机交互体系。公司由复旦大学知名教授邱锡鹏…

作者头像 李华