项目介绍抽奖系统使用前后端分离的做法数据库采用MYSQL进行存储使用Redis进行缓存MQ进行减轻后端的高并发压力最后部署到阿里云服务器上。前端主要由登/注册界面活动界面奖品界面人员界面构成后端实现的主要功能为强制登录添加活动奖品人员同时存储到redis减轻后端数据库的压力同时把添加了MQ确保应对高并发的情况中奖之后会通过QQ邮箱把信息发送给对应的用户项目功能登录功能用户可以通过手机号邮箱进行登录只要数据存在于数据库中校验通过即可实现登录用户可以通过验证码登录实现了阿里云的短信服务用户使用验证码登录时会调用阿里云的短信服务同时会把这个短信存储到Redis中有效期为1分钟。注册功能用户需要输入姓名手机号邮箱和密码输入的格式也是有要求的后端使用了正则表达式进行校验如果不符合规则则会被拒绝注册同时邮箱不可重复注册默认为管理员身份新建奖品功能只允许管理员进行操作允许上传10mb之内的图片查看奖品功能管理员可以看到创建的奖品的详细信息新建人员功能管理员可以进行新增人员操作默认身份为普通用户无法对抽奖系统进行操作只能被抽查看人员列表功能可以看到所有的人员列表包括管理员普通人员新建抽奖活动功能要求人员必须大于或等于奖品才允许创建只有普通用户可以参与抽奖管理员负责人员的抽人抽中之后会把消息存储到redis减轻数据库的压力查看抽奖活动功能抽完之后可以看到活动的情况人员中奖情况同时会保存在数据库以及redis中测试计划测试用例正常使用登录界面手机号登录邮箱登录验证码登录正常创建奖品正常查看奖品列表正常创建人员正常查看人员列表正常创建活动正常查看活动列表查看中奖名单自动化测试个人抽奖系统网址http://8.163.57.248:8080/blogin.html测试用例代码设计根据测试用例进行编写代码每个页面一个测试类确保逻辑清晰把驱动截屏单独创建一个类进行操作注意添加显示和隐式等待确保元素加载以及弹窗的处理使用测试工具IDEA编译器 selenium依赖提供自动化操作 common-io依赖进行屏幕截屏 webdrivermanager依赖负责管理驱动依赖分层测试代码lottery-system: 抽奖系统一登录页面测试登录作为系统入口重点验证页面可用性、正常登录流程与异常登录容错能力覆盖全场景登录逻辑A. 基础功能验证验证登录页面是否正常打开页面元素账号/邮箱/手机号输入框、密码框、登录按钮、提示文案完整加载页面标题、布局与需求一致无加载失败、样式错乱问题。B. 正常登录场景账号密码登录输入系统已注册的正确账号对应密码验证可成功登录系统跳转至后台管理首页邮箱密码登录输入已注册的正确邮箱对应密码验证登录流程通畅权限正常手机号验证码登录输入正确手机号获取有效验证码完成登录流程验证短信验证码校验逻辑有效。C. 异常登录场景必填项为空账号为空、密码为空、邮箱为空点击登录按钮系统弹出对应必填提示禁止登录格式错误输入不符合规范的手机号、邮箱格式如手机号位数不足、邮箱无符号系统拦截并提示格式错误账号信息错误输入不存在的账号、错误密码、未注册邮箱系统提示账号/密码错误拒绝登录无权限跳转。二注册页面测试聚焦用户注册流程验证注册页面可用性、成功注册规则与失败注册拦截逻辑保障用户数据唯一性A. 基础功能验证验证注册页面正常加载输入框、注册按钮、提示文案等元素完整页面跳转逻辑正常无卡顿、缺失问题。B. 注册成功场景手机号格式合规、密码符合长度及复杂度要求完成注册账号成功入库可正常登录使用未注册过的唯一邮箱搭配合规密码完成注册系统提示注册成功数据无重复。C. 注册失败场景必填项为空手机号、邮箱、密码任意一项为空点击注册按钮系统拦截并弹出必填提示注册流程终止数据重复使用已注册过的邮箱再次提交注册系统提示邮箱已存在禁止重复注册。三创建用户页面测试针对后台管理端创建用户功能验证用户新增操作的合规性、数据唯一性与异常拦截A. 基础功能验证登录后台后验证创建用户页面正常打开表单元素姓名、邮箱、手机号输入框、提交按钮完整可正常进入编辑状态。B. 创建成功场景姓名、邮箱、手机号三项必填项均完整填写无空值数据格式合规使用未注册过的唯一邮箱提交后用户信息成功保存人员列表可查询到新增用户。C. 创建失败场景数据重复填写已注册过的邮箱提交后系统提示邮箱已存在创建失败必填项为空姓名、邮箱、手机号任意一项留空提交后系统弹出必填提示无法完成创建。四人员列表展示测试核心验证后台人员列表页面功能已创建的用户信息可正常展示列表加载无异常数据与创建信息一致无缺失、错乱、重复显示问题支持正常浏览、查询。五创建奖品页面测试奖品管理是抽奖系统核心模块重点验证奖品新增、上传、校验逻辑覆盖正常创建与各类异常场景A. 基础功能验证验证创建奖品页面正常访问输入框、图片上传区域、价格填写框、描述框、提交按钮等元素完整页面无加载异常。B. 创建成功场景奖品名称、奖品图片、奖品价格、奖品描述四项必填内容全部非空信息完整奖品价格、图片大小在系统规定有效范围内图片格式为常规图片类型提交后奖品成功入库奖品列表可正常访问查看。C. 创建失败场景图片异常上传图片大小超出系统限制或上传非图片格式文件如文档、压缩包系统拦截并提示上传失败必填项为空奖品名称、图片、价格、描述任意一项为空提交后无法创建弹出对应提示D. 奖品列表展示测试验证已创建奖品信息在列表页正常展示可正常访问、查看详情数据与创建信息一致无丢失、显示错误问题。六抽奖活动页面测试A. 基础功能验证抽奖活动列表页面正常访问已创建活动信息完整展示活动状态、名称、描述等内容无误页面加载流畅。七创建抽奖活动测试A. 基础功能验证创建活动页面正常访问活动名称、描述输入框、圈选奖品、圈选人员按钮、创建按钮完整加载无元素缺失、加载失败问题。B. 活动创建合规场景活动名称、活动描述、关联奖品、关联人员四项内容全部非空信息完整参与活动人员数量大于奖品数量符合抽奖业务逻辑提交后活动创建成功。C. 活动创建异常场景活动名称、关联奖品、关联人员任意一项为空系统提示必填无法创建活动奖品数量大于参与人员数量不符合业务规则系统拦截并提示异常活动创建失败。四、难点以及亮点结合本次抽奖系统自动化测试实操过程总结出11条核心注意事项解决前期遇到的驱动、定位、等待、截图、流程等各类问题保障测试稳定执行显式等待与隐式等待区分使用隐式等待全局设置用于等待页面元素加载显式等待针对特定元素、弹窗进行等待精准处理元素定位和弹窗弹出延迟问题避免因页面加载慢导致的NoSuchElementException异常。截图命名规范严格按照日期时间用例名称命名确保每张截图唯一杜绝文件覆盖方便后续精准追溯对应测试用例。无头模式合理使用调试阶段用有头模式查看操作流程正式批量执行用例用无头模式提升执行效率减少资源占用。高并发场景归属UI自动化专注功能流程验证高并发压力测试交由开发人员通过专项工具开展不混淆测试类型。元素定位选择优先选用id、name等固定不变的属性定位避免使用动态变化的属性XPath和CSS选择器按需选用保障定位稳定性前期遇到的NoSuchFrameException、NoSuchElementException异常多因定位错误或未正确处理iframe导致。测试用例精简原则用例并非越多越好聚焦核心业务、主流程、高频异常场景即可避免冗余用例提升测试执行效率。驱动资源必须释放测试执行完毕后务必关闭驱动防止驱动提前quit导致Session ID为空出现NoSuchSessionException异常同时释放系统资源。多页面切换处理涉及多页面、iframe切换时使用switchTo方法切换框架或页面句柄操作完成后及时切回默认页面避免框架定位失败。静态驱动定义将驱动设置为静态变量全局复用程序启动时初始化避免重复创建驱动提升代码复用性。测试结果留存记录每条用例执行结果成功/失败、失败原因、对应截图形成测试报告方便后续查看、问题整改与回归测试。页面元素仔细核对定位元素前先检查前端DOM结构确认元素属性、层级、是否在iframe内避免选错元素、定位偏差提升用例通过率。性能测试使用postman测试接口联通使用jmeter进行简单的性能测试针对接口进行简单的性能测试JmeterJmeter运行脚本lottery-system: 抽奖系统设置线程组防止服务器崩溃本次压测采用阶梯式加压策略先等待 3 秒预热随后一次性启动 2 个并发线程持续压测 20 秒最后每 3 秒平滑停止 1 个线程压测过程稳定可控。性能测试图使用jmeter生成完整的报告测试结果活跃线程数随时间变化曲线平稳没有突然飙升或下跌证明压测执行过程非常稳定没有出现线程中断或崩溃的情况响应时间随时间变化抽奖系统 4 个核心接口的平均响应时间均保持在2~9ms区间且随压测推进呈平稳下降趋势最终稳定在2~4ms。其中抽奖接口响应效率最优各接口间负载均衡无性能衰减或异常波动系统在当前压力下表现稳定高效每秒点击数吞吐量从每秒事务数TPS图表可见在 2 个并发用户的压测场景下抽奖系统 4 个核心接口的 TPS 随压测推进线性增长最终稳定在约59 笔 / 秒且所有事务均为成功状态无异常波动或业务失败说明系统具备高效、稳定的业务处理能力可可靠承载当前压力下的业务请求。接口自动化测试代码参考https://gitee.com/zhan-yutao/lottery-system/tree/master/LotteryAPIAutoTest脑图使用的工具Postman接口的测试连通性Allure生成接口测试的最终报告Pycharm编写接口测试Idea启动项目测试范围用户模块、活动模块、奖品模块、抽奖核心接口测试技术pytest JSON Schema 数据校验 YAML 数据驱动执行结果全接口用例执行完毕功能与格式均符合预期鉴权方式TOKEN接口测试分层需要使用的包配置pytest命令公共类日志类主要负责对日志进行分层打印出对应级别的日志info和error请求类主要对请求的方法进行了封装post和get方法Yaml类为了方便读取到的格式可以直接使用所以这里使用的三个方法读写删用例全部通过具体的测试用例具体流程一、用户登录接口TestLogin测试场景正常登录手机号 / 邮箱自动获取并写入 token、身份信息异常场景账号为空、密码为空、账号不存在、密码错误校验点登录成功返回 200token 不为空登录失败返回 500格式符合错误 Schema鉴权信息可正常写入 YAML 供后续接口使用测试结果✅ 全部通过二、用户注册接口Testregister测试场景正常注册合法姓名、邮箱、手机号、密码、身份异常注册手机号格式错误、邮箱格式错误、手机号已存在校验点成功注册code200data 为对象失败注册code500datanull格式严格匹配测试结果✅ 全部通过三、用户列表查询接口TestuserList测试场景未登录访问返回 401 鉴权失败已登录访问正常获取用户列表数据校验点JSON Schema 严格校验返回结构、字段类型必传字段userId、userName、identity响应格式code200data 为数组测试结果✅ 全部通过四、活动列表接口Testactivity测试场景未登录访问返回 401已登录查询获取活动分页数据totalrecords校验点Schema 校验活动 ID、名称、描述、状态数据格式规范分页结构正确测试结果✅ 全部通过五、活动详情接口TestactivityDetail测试场景未登录访问401已登录携带 activityId 查询详情校验点完整 Schema 校验活动信息、奖品数组、用户数组所有嵌套字段类型、必填项校验通过测试结果✅ 全部通过六、活动创建接口Test_activityCreate测试场景未登录访问401异常场景名称 / 描述为空、奖品 / 用户列表为空、ID 为空等 10 种异常正常场景合法参数创建活动自动写入 activityId校验点异常用例统一返回 500成功用例返回 200数据入库正常测试结果✅ 全部通过七、奖品列表接口TestPrizeList测试场景未登录访问401已登录获取奖品分页列表校验点校验奖品 ID、名称、描述、价格、图片地址分页结构totalrecords格式正确测试结果✅ 全部通过八、奖品创建接口TestprizeCreate测试场景未登录访问401异常场景名称 / 价格为空、JSON 格式错误、缺少文件 / 参数正常场景form-data 格式上传图片 奖品信息校验点文件上传正常参数校验严格成功创建返回 200data 不为空测试结果✅ 全部通过九、抽奖接口TestdrawPrize测试场景未登录访问直接返回 401 鉴权拦截校验点接口鉴权机制有效测试结果✅ 全部通过使用Allure生成接口的测试报告执行时间注意点需要指定测试用例的顺序一开始由于我没有指定测试用例的顺序导致顺序不对必须要先执行登录操作才能进行其他的操作可以通过pytest的包使用order命令进行指定需要注意后端接口的接收参数的格式在测试接口的时候部分接口使用的是表单格式我一直传的是json格式导致后端没有接收到可以通过查看后端的日志解决问题需要注意后端验证的时候使用的参数这里的创建奖品接口里面的奖品等级这个参数虽然传的是字符串但是到后端处理之后会被改成枚举类型所以接口必须传后端的枚举类型因为不走前端就没有调到那个转换的流程导致我测试创建奖品的时候一直报错解决方式Debug看传参过程哪一部丢失需要注意登录之后需要把信息存储到yml文件中后续其他接口才可以直接获取到否则其他接口进行访问会被拒绝需要注意schma的参数校验针对不同的数据类型需要有不同的对应值在创建活动接口存在表单上传的问题同时传文本和数据这里需要注意一开始我没有注意到导致我传输的要么json要么是param格式导致一直报错需要看后端的报错日志解决上传文件时文件的格式有要求大小最大为10mb超过之后会导致后端报错
个人抽奖系统构建及测试
项目介绍抽奖系统使用前后端分离的做法数据库采用MYSQL进行存储使用Redis进行缓存MQ进行减轻后端的高并发压力最后部署到阿里云服务器上。前端主要由登/注册界面活动界面奖品界面人员界面构成后端实现的主要功能为强制登录添加活动奖品人员同时存储到redis减轻后端数据库的压力同时把添加了MQ确保应对高并发的情况中奖之后会通过QQ邮箱把信息发送给对应的用户项目功能登录功能用户可以通过手机号邮箱进行登录只要数据存在于数据库中校验通过即可实现登录用户可以通过验证码登录实现了阿里云的短信服务用户使用验证码登录时会调用阿里云的短信服务同时会把这个短信存储到Redis中有效期为1分钟。注册功能用户需要输入姓名手机号邮箱和密码输入的格式也是有要求的后端使用了正则表达式进行校验如果不符合规则则会被拒绝注册同时邮箱不可重复注册默认为管理员身份新建奖品功能只允许管理员进行操作允许上传10mb之内的图片查看奖品功能管理员可以看到创建的奖品的详细信息新建人员功能管理员可以进行新增人员操作默认身份为普通用户无法对抽奖系统进行操作只能被抽查看人员列表功能可以看到所有的人员列表包括管理员普通人员新建抽奖活动功能要求人员必须大于或等于奖品才允许创建只有普通用户可以参与抽奖管理员负责人员的抽人抽中之后会把消息存储到redis减轻数据库的压力查看抽奖活动功能抽完之后可以看到活动的情况人员中奖情况同时会保存在数据库以及redis中测试计划测试用例正常使用登录界面手机号登录邮箱登录验证码登录正常创建奖品正常查看奖品列表正常创建人员正常查看人员列表正常创建活动正常查看活动列表查看中奖名单自动化测试个人抽奖系统网址http://8.163.57.248:8080/blogin.html测试用例代码设计根据测试用例进行编写代码每个页面一个测试类确保逻辑清晰把驱动截屏单独创建一个类进行操作注意添加显示和隐式等待确保元素加载以及弹窗的处理使用测试工具IDEA编译器 selenium依赖提供自动化操作 common-io依赖进行屏幕截屏 webdrivermanager依赖负责管理驱动依赖分层测试代码lottery-system: 抽奖系统一登录页面测试登录作为系统入口重点验证页面可用性、正常登录流程与异常登录容错能力覆盖全场景登录逻辑A. 基础功能验证验证登录页面是否正常打开页面元素账号/邮箱/手机号输入框、密码框、登录按钮、提示文案完整加载页面标题、布局与需求一致无加载失败、样式错乱问题。B. 正常登录场景账号密码登录输入系统已注册的正确账号对应密码验证可成功登录系统跳转至后台管理首页邮箱密码登录输入已注册的正确邮箱对应密码验证登录流程通畅权限正常手机号验证码登录输入正确手机号获取有效验证码完成登录流程验证短信验证码校验逻辑有效。C. 异常登录场景必填项为空账号为空、密码为空、邮箱为空点击登录按钮系统弹出对应必填提示禁止登录格式错误输入不符合规范的手机号、邮箱格式如手机号位数不足、邮箱无符号系统拦截并提示格式错误账号信息错误输入不存在的账号、错误密码、未注册邮箱系统提示账号/密码错误拒绝登录无权限跳转。二注册页面测试聚焦用户注册流程验证注册页面可用性、成功注册规则与失败注册拦截逻辑保障用户数据唯一性A. 基础功能验证验证注册页面正常加载输入框、注册按钮、提示文案等元素完整页面跳转逻辑正常无卡顿、缺失问题。B. 注册成功场景手机号格式合规、密码符合长度及复杂度要求完成注册账号成功入库可正常登录使用未注册过的唯一邮箱搭配合规密码完成注册系统提示注册成功数据无重复。C. 注册失败场景必填项为空手机号、邮箱、密码任意一项为空点击注册按钮系统拦截并弹出必填提示注册流程终止数据重复使用已注册过的邮箱再次提交注册系统提示邮箱已存在禁止重复注册。三创建用户页面测试针对后台管理端创建用户功能验证用户新增操作的合规性、数据唯一性与异常拦截A. 基础功能验证登录后台后验证创建用户页面正常打开表单元素姓名、邮箱、手机号输入框、提交按钮完整可正常进入编辑状态。B. 创建成功场景姓名、邮箱、手机号三项必填项均完整填写无空值数据格式合规使用未注册过的唯一邮箱提交后用户信息成功保存人员列表可查询到新增用户。C. 创建失败场景数据重复填写已注册过的邮箱提交后系统提示邮箱已存在创建失败必填项为空姓名、邮箱、手机号任意一项留空提交后系统弹出必填提示无法完成创建。四人员列表展示测试核心验证后台人员列表页面功能已创建的用户信息可正常展示列表加载无异常数据与创建信息一致无缺失、错乱、重复显示问题支持正常浏览、查询。五创建奖品页面测试奖品管理是抽奖系统核心模块重点验证奖品新增、上传、校验逻辑覆盖正常创建与各类异常场景A. 基础功能验证验证创建奖品页面正常访问输入框、图片上传区域、价格填写框、描述框、提交按钮等元素完整页面无加载异常。B. 创建成功场景奖品名称、奖品图片、奖品价格、奖品描述四项必填内容全部非空信息完整奖品价格、图片大小在系统规定有效范围内图片格式为常规图片类型提交后奖品成功入库奖品列表可正常访问查看。C. 创建失败场景图片异常上传图片大小超出系统限制或上传非图片格式文件如文档、压缩包系统拦截并提示上传失败必填项为空奖品名称、图片、价格、描述任意一项为空提交后无法创建弹出对应提示D. 奖品列表展示测试验证已创建奖品信息在列表页正常展示可正常访问、查看详情数据与创建信息一致无丢失、显示错误问题。六抽奖活动页面测试A. 基础功能验证抽奖活动列表页面正常访问已创建活动信息完整展示活动状态、名称、描述等内容无误页面加载流畅。七创建抽奖活动测试A. 基础功能验证创建活动页面正常访问活动名称、描述输入框、圈选奖品、圈选人员按钮、创建按钮完整加载无元素缺失、加载失败问题。B. 活动创建合规场景活动名称、活动描述、关联奖品、关联人员四项内容全部非空信息完整参与活动人员数量大于奖品数量符合抽奖业务逻辑提交后活动创建成功。C. 活动创建异常场景活动名称、关联奖品、关联人员任意一项为空系统提示必填无法创建活动奖品数量大于参与人员数量不符合业务规则系统拦截并提示异常活动创建失败。四、难点以及亮点结合本次抽奖系统自动化测试实操过程总结出11条核心注意事项解决前期遇到的驱动、定位、等待、截图、流程等各类问题保障测试稳定执行显式等待与隐式等待区分使用隐式等待全局设置用于等待页面元素加载显式等待针对特定元素、弹窗进行等待精准处理元素定位和弹窗弹出延迟问题避免因页面加载慢导致的NoSuchElementException异常。截图命名规范严格按照日期时间用例名称命名确保每张截图唯一杜绝文件覆盖方便后续精准追溯对应测试用例。无头模式合理使用调试阶段用有头模式查看操作流程正式批量执行用例用无头模式提升执行效率减少资源占用。高并发场景归属UI自动化专注功能流程验证高并发压力测试交由开发人员通过专项工具开展不混淆测试类型。元素定位选择优先选用id、name等固定不变的属性定位避免使用动态变化的属性XPath和CSS选择器按需选用保障定位稳定性前期遇到的NoSuchFrameException、NoSuchElementException异常多因定位错误或未正确处理iframe导致。测试用例精简原则用例并非越多越好聚焦核心业务、主流程、高频异常场景即可避免冗余用例提升测试执行效率。驱动资源必须释放测试执行完毕后务必关闭驱动防止驱动提前quit导致Session ID为空出现NoSuchSessionException异常同时释放系统资源。多页面切换处理涉及多页面、iframe切换时使用switchTo方法切换框架或页面句柄操作完成后及时切回默认页面避免框架定位失败。静态驱动定义将驱动设置为静态变量全局复用程序启动时初始化避免重复创建驱动提升代码复用性。测试结果留存记录每条用例执行结果成功/失败、失败原因、对应截图形成测试报告方便后续查看、问题整改与回归测试。页面元素仔细核对定位元素前先检查前端DOM结构确认元素属性、层级、是否在iframe内避免选错元素、定位偏差提升用例通过率。性能测试使用postman测试接口联通使用jmeter进行简单的性能测试针对接口进行简单的性能测试JmeterJmeter运行脚本lottery-system: 抽奖系统设置线程组防止服务器崩溃本次压测采用阶梯式加压策略先等待 3 秒预热随后一次性启动 2 个并发线程持续压测 20 秒最后每 3 秒平滑停止 1 个线程压测过程稳定可控。性能测试图使用jmeter生成完整的报告测试结果活跃线程数随时间变化曲线平稳没有突然飙升或下跌证明压测执行过程非常稳定没有出现线程中断或崩溃的情况响应时间随时间变化抽奖系统 4 个核心接口的平均响应时间均保持在2~9ms区间且随压测推进呈平稳下降趋势最终稳定在2~4ms。其中抽奖接口响应效率最优各接口间负载均衡无性能衰减或异常波动系统在当前压力下表现稳定高效每秒点击数吞吐量从每秒事务数TPS图表可见在 2 个并发用户的压测场景下抽奖系统 4 个核心接口的 TPS 随压测推进线性增长最终稳定在约59 笔 / 秒且所有事务均为成功状态无异常波动或业务失败说明系统具备高效、稳定的业务处理能力可可靠承载当前压力下的业务请求。接口自动化测试代码参考https://gitee.com/zhan-yutao/lottery-system/tree/master/LotteryAPIAutoTest脑图使用的工具Postman接口的测试连通性Allure生成接口测试的最终报告Pycharm编写接口测试Idea启动项目测试范围用户模块、活动模块、奖品模块、抽奖核心接口测试技术pytest JSON Schema 数据校验 YAML 数据驱动执行结果全接口用例执行完毕功能与格式均符合预期鉴权方式TOKEN接口测试分层需要使用的包配置pytest命令公共类日志类主要负责对日志进行分层打印出对应级别的日志info和error请求类主要对请求的方法进行了封装post和get方法Yaml类为了方便读取到的格式可以直接使用所以这里使用的三个方法读写删用例全部通过具体的测试用例具体流程一、用户登录接口TestLogin测试场景正常登录手机号 / 邮箱自动获取并写入 token、身份信息异常场景账号为空、密码为空、账号不存在、密码错误校验点登录成功返回 200token 不为空登录失败返回 500格式符合错误 Schema鉴权信息可正常写入 YAML 供后续接口使用测试结果✅ 全部通过二、用户注册接口Testregister测试场景正常注册合法姓名、邮箱、手机号、密码、身份异常注册手机号格式错误、邮箱格式错误、手机号已存在校验点成功注册code200data 为对象失败注册code500datanull格式严格匹配测试结果✅ 全部通过三、用户列表查询接口TestuserList测试场景未登录访问返回 401 鉴权失败已登录访问正常获取用户列表数据校验点JSON Schema 严格校验返回结构、字段类型必传字段userId、userName、identity响应格式code200data 为数组测试结果✅ 全部通过四、活动列表接口Testactivity测试场景未登录访问返回 401已登录查询获取活动分页数据totalrecords校验点Schema 校验活动 ID、名称、描述、状态数据格式规范分页结构正确测试结果✅ 全部通过五、活动详情接口TestactivityDetail测试场景未登录访问401已登录携带 activityId 查询详情校验点完整 Schema 校验活动信息、奖品数组、用户数组所有嵌套字段类型、必填项校验通过测试结果✅ 全部通过六、活动创建接口Test_activityCreate测试场景未登录访问401异常场景名称 / 描述为空、奖品 / 用户列表为空、ID 为空等 10 种异常正常场景合法参数创建活动自动写入 activityId校验点异常用例统一返回 500成功用例返回 200数据入库正常测试结果✅ 全部通过七、奖品列表接口TestPrizeList测试场景未登录访问401已登录获取奖品分页列表校验点校验奖品 ID、名称、描述、价格、图片地址分页结构totalrecords格式正确测试结果✅ 全部通过八、奖品创建接口TestprizeCreate测试场景未登录访问401异常场景名称 / 价格为空、JSON 格式错误、缺少文件 / 参数正常场景form-data 格式上传图片 奖品信息校验点文件上传正常参数校验严格成功创建返回 200data 不为空测试结果✅ 全部通过九、抽奖接口TestdrawPrize测试场景未登录访问直接返回 401 鉴权拦截校验点接口鉴权机制有效测试结果✅ 全部通过使用Allure生成接口的测试报告执行时间注意点需要指定测试用例的顺序一开始由于我没有指定测试用例的顺序导致顺序不对必须要先执行登录操作才能进行其他的操作可以通过pytest的包使用order命令进行指定需要注意后端接口的接收参数的格式在测试接口的时候部分接口使用的是表单格式我一直传的是json格式导致后端没有接收到可以通过查看后端的日志解决问题需要注意后端验证的时候使用的参数这里的创建奖品接口里面的奖品等级这个参数虽然传的是字符串但是到后端处理之后会被改成枚举类型所以接口必须传后端的枚举类型因为不走前端就没有调到那个转换的流程导致我测试创建奖品的时候一直报错解决方式Debug看传参过程哪一部丢失需要注意登录之后需要把信息存储到yml文件中后续其他接口才可以直接获取到否则其他接口进行访问会被拒绝需要注意schma的参数校验针对不同的数据类型需要有不同的对应值在创建活动接口存在表单上传的问题同时传文本和数据这里需要注意一开始我没有注意到导致我传输的要么json要么是param格式导致一直报错需要看后端的报错日志解决上传文件时文件的格式有要求大小最大为10mb超过之后会导致后端报错