news 2026/4/5 23:04:29

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/3/28 22:45:33

Cypress

Cypress是一个专注于现代网页应用的前端测试框架。它最大的特点是直接运行在浏览器内部,可以实时观察和测试应用。这就像是你在开车时,不再通过遥控器指挥,而是直接坐进驾驶舱去操控,对车况和路况的感知更直接、反馈更即时。&…

作者头像 李华
网站建设 2026/3/17 14:12:17

k6是什么

1. 它是什么? k6 是一个专注于性能测试的工具,主要用来模拟大量用户访问一个网站、应用或接口,以检验系统在高负载下的表现。它的核心是一个负载生成器。 一个简单的类比是:假设你要测试一个新开的快递站能同时处理多少包裹。你…

作者头像 李华
网站建设 2026/3/24 0:52:30

基于Java的旅游资源网站平台设计与实现(11874)

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

作者头像 李华
网站建设 2026/3/28 18:03:54

学网络安全主要学什么内容?

想入行网络安全,不少新手都会纠结入门基础和学习内容。其实网络安全入门对基础要求并不高,零基础也能逐步上手,那么学网络安全需要什么基础?学什么内容?具体请看下文。学网络安全需要什么基础?如果你想参加网络安全培训和学习,…

作者头像 李华
网站建设 2026/3/27 4:13:30

实用linux命令行

1.概述 在实际做实验的过程中一直用的 2.命令行 2.1激活环境 conda activate 环境名 2.2创造文件夹和文件 mkdir 文件夹名 touch 文件 2.3创造后台程序,让服务器可以在被关闭后继续跑 tmux new -s 名字 打卡 tmux attach -t 名字 2.4查看文件、修改文件…

作者头像 李华
网站建设 2026/3/15 21:12:38

把所有业务都转成 MCP,太傻了!AI Skill 才是正道

MCP(Model Context Protocol)可能火得有些过头了。自从 Anthropic 把这套协议抛出来,不少同行就开始坐不住,仿佛一夜之间,不把自家的业务接口重写成 MCP Server,就拿不到 AI 时代的入场券了。 每隔几年&am…

作者头像 李华