基于 Python+Selenium+Requests 的若依系统自动化测试实战
基于 Python+Selenium+Requests 的若依系统自动化测试实战
若依 (RuoYi-Vue) 开源系统的 Web UI 与接口自动化测试项目。项目以企业级后台系统为实践对象,技术栈为 Python、Selenium、Requests,结合 Pytest 实现用例管理。下面从项目背景、技术选型、核心实现、成果与优化四个维度,分享本次自动化测试实战经验。
一、项目背景
若依系统是国内主流的开源后台管理框架,广泛应用于企业级 Web 系统开发,是学习软件测试、自动化技术的优质实践项目。本次项目针对其登录模块、用户管理模块、权限控制、文件下载等核心功能,搭建自动化测试体系,目标解决手动测试效率低、回归测试重复劳动多、易遗漏 bug 等痛点,同时适配 Web UI 与接口双重测试场景,保障系统功能稳定性。
被测系统:若依演示环境(https://demo.ruoyi.vip/index)
测试范围:Web UI 自动化测试(9 条核心用例)+ 接口自动化测试(7 条核心用例)
测试账号:admin / admin123
二、技术栈
本次自动化测试项目采用Python 主导的轻量化技术栈,兼顾学习成本与实用性,适合在校生入门自动化测试,核心组件如下:
Selenium:Web UI 自动化核心库,驱动浏览器模拟用户操作(输入、点击、切换 iframe / 窗口等),适配 Chrome、Edge 等主流浏览器,理解前端页面交互逻辑。
Requests:接口自动化核心库,发送 HTTP/HTTPS 请求(GET/POST),处理 Cookie、请求参数、响应结果解析,掌握接口请求与数据校验基础。
Pytest:测试框架,用于用例组织、执行、断言,支持 setup/teardown 前置后置操作,规范测试代码结构,培养工程化思维。
Allure-pytest:测试报告工具,生成简洁直观的 HTML 报告,展示用例执行结果、失败原因、耗时等信息,便于复盘调试,直观呈现项目成果。
Session 会话管理:接口测试中维持登录态,复用 Cookie,避免重复登录请求,理解 Web 系统会话与鉴权机制。
源码地址:https://gitee.com/ls109/ruoyi_test.git
三、核心自动化测试实现
项目整体结构清晰,分为Web UI 测试模块、接口测试模块、公共工具模块、执行入口,代码模块化、易理解,适合在校生学习参考。下面重点拆解核心用例实现逻辑。
(一)Web UI 自动化测试(test_web.py)
核心覆盖登录校验、页面跳转、数据查询、退出登录等场景,通过 Selenium 模拟用户真实操作,贴近实际测试工作流程,关键实现如下:
1. 浏览器驱动封装(web_driver.py)
统一初始化 Edge 浏览器,设置窗口最大化、隐式等待 10 秒,避免每个用例重复配置驱动,提升代码复用性,理解封装思想。
from selenium import webdriver
def get_driver():
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
return driver
2. 登录公共方法封装
提取登录逻辑,支持传入不同账号密码,减少代码冗余,适配 “正确登录、密码错误、账号 / 密码为空” 等多场景用例,掌握参数化设计思路。
def login(self,uname,pwd):
self.driver = get_driver()
self.driver.get("https://demo.ruoyi.vip/login")
self.driver.find_element(By.NAME, "username").send_keys(uname)
self.driver.find_element(By.NAME, "password").send_keys(pwd)
ucode = int(input("输入当前页面验证码:"))
self.driver.find_element(By.NAME, "validateCode").send_keys(ucode)
self.driver.find_element(By.ID, "btnSubmit").click()
3. 核心用例示例
UI-001 正确账号密码登录:验证合法账号登录后跳转首页,断言 URL 包含 /index,覆盖正常登录场景,掌握基础断言设计。
UI-005 进入用户管理页面:登录后通过 CSS 定位菜单栏,点击 “系统管理 - 用户管理”,切换 iframe 后校验页面内容,验证菜单跳转与 iframe 加载逻辑,理解嵌套页面处理方式。
UI-009 退出登录:定位右上角用户头像与退出按钮,点击后断言跳转登录页,验证退出功能有效性,熟悉页面元素定位与交互。
(二)接口自动化测试(test_api.py)
覆盖登录接口、用户 / 角色列表查询、权限校验、文件下载等接口,通过 Requests 发送请求,校验响应状态码、返回数据格式与内容,理解后端接口工作机制,关键实现如下:
1. Session 会话复用
通过 requests.Session () 创建会话,登录后自动保存 Cookie,后续接口请求无需重复登录,适配需要鉴权的接口场景,掌握会话保持技术。
def setup_method(self):
self.session = requests.Session()
2. 登录接口封装
先调用验证码接口获取图片,手动输入验证码后提交登录请求,返回响应结果,适配图形验证码场景,理解接口请求流程与参数传递。
def login(self,username="admin", password="admin123",rememberme= "false"):
resp = self.session.get(self.code_url)
with open("captcha.jpg", "wb") as f:
f.write(resp.content)
ucode = int(input("输入当前页面验证码:"))
data = {"username": username, "password": password,"validateCode": ucode,"rememberMe": rememberme}
r = self.session.post(url=self.login_url, data=data)
return r
3. 核心用例示例
API-003 获取用户列表:登录后发送 POST 请求获取用户分页列表,断言状态码 200、返回 code=0、包含 rows 与 total 字段,校验接口数据完整性,掌握 JSON 数据解析与断言。
API-005 无 Cookie 鉴权失败:不登录直接请求角色列表接口,断言跳转登录页,验证接口权限控制有效性,理解接口鉴权机制。
API-007 下载代码参数文件:登录后发送 GET 请求下载文件,断言响应头包含 octet-stream、文件以 PK 开头(zip 包),验证文件下载接口可用性,熟悉文件流与响应头校验。
(三)用例执行与报告生成
通过 run.py 统一执行所有用例,集成 Pytest 与 Allure,一键执行 Web UI + 接口用例,生成可视化报告,便于快速查看用例通过率、失败用例详情,直观展示学习成果,培养工程化执行与复盘能力。
# run.py
import pytest
pytest.main(["-s", "-v"])
# 生成Allure报告
os.system("allure generate -o report -c temps")
四、项目成果与优化方向
(一)项目成果
独立完成16 条核心自动化用例(9 条 UI+7 条接口),覆盖系统核心流程,完整实践自动化测试从设计到落地的全流程,夯实专业基础。
实现 UI 与接口测试一体化,代码结构模块化、复用性强,掌握基础的代码设计与调试能力,提升动手实践水平。
集成可视化测试报告,用例执行结果可追溯、可复盘,快速定位功能缺陷,培养严谨的测试思维。
(二)优化方向
验证码自动化识别:当前验证码需手动输入,后续计划集成 Tesseract-OCR 或第三方打码平台,实现验证码自动识别,进一步提升自动化程度,拓展技术边界。
数据驱动测试:引入 Excel/CSV 管理测试数据,实现用例与数据分离,适配多组测试数据批量执行场景,学习数据驱动设计模式。
异常场景补充:新增网络异常、接口超时、非法参数等异常用例,提升自动化测试覆盖率,完善测试思维体系。
五、总结
作为大三在校生,本次基于 Python 的自动化测试实战,从实际业务场景出发,搭建了一套轻量化、易维护的自动化测试框架,系统掌握了 Selenium 元素定位、iframe / 窗口切换、Requests 接口请求与会话管理、Pytest 用例设计等核心技能。
更多推荐


所有评论(0)