# ShopAppAuto **Repository Path**: fhm_0611qqcom/APPshop ## Basic Information - **Project Name**: ShopAppAuto - **Description**: 商城App自动化测试脚本 Python+PO+Selenium+Pytest+Allure + Jenkins - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-02 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShopAPP移动端自动化测试项目 > 📌 Gitee仓库文档|电商Android APP UI自动化测试实践(Python+Appium+PO+Pytest) ## 📋 项目简介 **项目背景**:本项目为精品生活电商原生Android APP,覆盖启动初始化、账号登录、商品搜索浏览、商品加购、购物车管理、下单结算、订单查询、个人中心等完整用户消费链路;APP存在多页面跳转、弹窗权限、H5混合页面、动态元素、验证码校验等场景,版本迭代频繁,纯手工回归工作量大,易出现漏测。 本人独立完成整套APP自动化测试环境搭建、PO分层自动化框架从零落地,完成商城核心业务全流程自动化脚本开发,接入Jenkins持续集成,实现版本迭代自动回归,大幅降低重复手工测试成本,保障APP发版质量。 ## ✨ 技术栈 | 分类 | 技术/工具 | |:--- |:--- | | 编程语言 | Python3 | | APP自动化核心 | Appium、UiAutomator2 | | 测试框架 | Pytest | | 可视化测试报告 | Allure | | 设计模式 | PO页面对象模式 + 数据驱动DDT | | 环境依赖 | JDK、Android SDK、Node.js、MuMu模拟器 | | 元素定位工具 | Appium Inspector | | 版本管理 | Git / Gitee | | 持续集成 | Jenkins | | 日志/文件处理 | 自定义工具类读取JSON测试数据 | | 缺陷管理 | Jira | ## 🎯 主要工作与职责 1. **APP手工功能测试** - 梳理商城完整消费业务链路,拆解登录、商品、购物车、订单、个人中心模块需求,编写全量功能测试用例; - 执行兼容性测试(多Android系统版本、真机/模拟器)、弹窗权限、弱网、异常输入、边界值场景测试; - 校验商品价格、库存、优惠券、订单金额计算逻辑,跟踪缺陷提交、复现、修复回归闭环。 2. **Appium自动化环境与框架搭建落地** - 完整搭建移动端自动化运行环境:JDK、Android SDK、Node.js、Appium Server、MuMu模拟器、Appium Inspector; - 基于`Python + Appium + PO + Pytest + Allure`搭建分层自动化框架,实现基础操作、页面元素、测试用例完全解耦; - base基础层封装APP通用操作:启动驱动、元素点击/输入/滑动、截图、等待、获取元素属性、弹窗处理等公共方法; - pages层按业务模块封装页面对象,统一管理页面元素定位与业务操作,隔离元素与业务脚本; - 使用JSON实现数据驱动,登录、搜索、下单等场景批量参数化用例,覆盖正向、反向、异常输入场景; - 基于conftest编写多级pytest fixture,统一管理APP驱动初始化、登录前置、页面跳转等全局前后置; - 解决自动化核心难点:APP启动弹窗处理、动态id定位、H5页面切换、短信验证码自动获取绕过登录; - 开发商城核心全流程自动化脚本:登录-搜索商品-加入购物车-结算下单-订单查询,覆盖80%高频核心业务; - 对接Git+Jenkins搭建CI流水线,代码提交自动启动模拟器执行自动化回归,自动生成Allure可视化报告,替代大量重复手工回归,提升迭代测试效率。 ## 🧩 APP核心业务模块 1. **启动初始化模块**:APP冷启动、隐私协议弹窗、权限授权、引导页跳过 2. **登录账号模块**:账号密码登录、短信验证码登录、登录状态校验、异常账号密码拦截 3. **商品浏览搜索模块**:首页推荐、分类筛选、关键词搜索、商品详情、规格选择 4. **购物车模块**:商品加购、数量增减、选中/取消商品、批量删除、价格汇总校验 5. **订单结算模块**:收货地址选择、优惠券抵扣、支付流程、订单提交 6. **个人中心&订单模块**:全部订单查看、待付款/待发货/售后订单筛选、订单详情 ## 🏗️ 项目核心框架介绍 > 框架:`python + appium + PO + pytest + allure + jenkins` 采用面向对象分层封装,页面与用例解耦、测试数据与脚本分离,便于后期业务迭代维护。 1. **base基础层 base/** 封装APP底层公共操作父类,所有页面对象继承该类: - 驱动初始化、APP启停、关闭驱动 - 显式等待、元素点击、输入、清除文本、滑动swipe、坐标tap手势 - 获取元素文本、截图保存、判断弹窗、切换H5/webview页面 - 封装失败用例自动截图、日志打印方法 2. **pages页面对象层 pages/** 每个业务页面独立创建页面类,遵循PO思想: - 类属性:页面所有元素定位表达式(id/xpath/class) - 类方法:单步原子操作 + 完整业务组合操作(一键登录、一键加购等) - 返回页面结果数据,供测试脚本断言使用 3. **scripts测试脚本层 scripts/** pytest自动化测试用例,数据驱动实现批量场景覆盖: - 读取data目录JSON测试数据,@pytest.mark.parametrize参数化执行 - 调用pages层页面业务方法,对返回文本、价格、页面状态做多层断言 - 用例执行失败自动保存截图、记录日志至报告 - 复用conftest全局fixture,无需重复编写APP启动、登录前置代码 4. **utils工具层 utils/** 通用工具函数封装: - log_utils:全局日志统一打印,区分INFO/ERROR级别 - file_reader:读取JSON测试数据、格式化参数列表 - sms_utils:读取模拟器短信,自动提取验证码(解决登录验证码自动化痛点) 5. **其他目录与配置文件** - `data`:数据驱动目录,存放各模块正向/反向测试数据json文件 - `apk`:shop测试包,支持脚本自动安装卸载 - `log`:自动化运行全量日志输出目录 - `img`:执行失败用例截图存储目录 - `report`:Allure测试报告原始数据与可视化文件 - `config.py`:全局配置文件(模拟器地址、Appium服务地址、APP包名/Activity、设备版本、测试账号) - `conftest.py`:pytest全局夹具,管理session/class/function级别的APP驱动、登录前置、资源销毁 - `pytest.ini`:pytest运行配置、用例标签、日志等级配置 - `Jenkinsfile`:Jenkins持续集成流水线脚本 - `requirements.txt`:Python项目依赖清单 ## 📁 完整项目目录结构 ``` AppAutoYANXUAN/ ├── base/ # Base基础公共操作层 │ └── base_page.py # APP通用操作父类 ├── pages/ # PO页面对象层 │ ├── init_page.py # 启动引导页 │ ├── login_page.py # 登录页面 │ ├── home_page.py # 首页搜索页面 │ ├── goods_detail_page.py # 商品详情页 │ ├── cart_page.py # 购物车页面 │ └── order_page.py # 订单结算&个人订单页 ├── scripts/ # Pytest自动化测试用例 │ ├── test_app_init.py │ ├── test_login.py │ ├── test_goods_search.py │ ├── test_cart.py │ └── test_order_flow.py ├── utils/ # 通用工具层 │ ├── log_utils.py │ ├── file_reader.py │ └── sms_utils.py ├── data/ # 数据驱动测试数据 │ ├── login_data.json │ ├── search_data.json │ └── cart_order_data.json ├── apk/ # 网易严选测试APK包 │ └── yanxuan_test.apk ├── config.py # 全局环境、设备、APP配置 ├── conftest.py # Pytest全局Fixture驱动管理 ├── pytest.ini # Pytest运行配置 ├── log/ # 运行日志目录 ├── img/ # 失败截图存放目录 ├── report/ # Allure测试报告目录 ├── Jenkinsfile # Jenkins CI流水线配置 └── requirements.txt # Python依赖包清单 ``` ## 🚀 环境与项目运行说明 ### 一、前置环境部署 1. 安装JDK、Android SDK,配置adb环境变量; 2. 安装Node.js,全局安装Appium Server; 3. 启动MuMu模拟器,执行`adb connect 127.0.0.1:16384`连接设备; 4. 打开Appium Server(默认地址:127.0.0.1:4723); 5. 安装Appium Inspector用于页面元素定位调试。 ### 二、Python依赖安装 ```bash pip install -r requirements.txt ``` ### 三、本地执行自动化脚本,生成Allure报告 ```bash # 执行全部APP自动化用例,输出allure原始数据 pytest scripts/ -v --alluredir=report/allure_raw # 启动并打开可视化测试报告 allure serve report/allure_raw ``` ### 四、Jenkins + Gitee 持续集成流水线流程 1. Jenkins拉取Gitee仓库最新代码; 2. 自动启动MuMu模拟器,校验adb设备连接状态; 3. 安装项目Python全部依赖包; 4. 启动Appium服务,执行pytest自动化全量用例; 5. 生成Allure可视化测试报告,失败用例截图嵌入报告; 6. 支持代码提交自动触发、每日定时回归任务,输出测试结果。 ## 💡 项目难点解决方案 1. **登录验证码自动化** - 方案1:测试环境配置万能验证码,直接填入绕过短信校验; - 方案2:封装短信读取工具类,读取模拟器短信自动提取验证码; - 方案3:后台提供免登录token接口,自动化脚本直接携带token跳过登录流程。 2. **动态resource-id元素定位不稳定** 优先使用text文本xpath模糊匹配、class组合定位,减少id依赖,提升脚本稳定性。 3. **H5混合页面切换** base层封装切换webview方法,自动识别页面上下文,解决原生与网页元素区分定位问题。 4. **弹窗、权限授权干扰自动化** base层封装循环判断弹窗方法,自动识别隐私、权限弹窗并一键点击同意,避免脚本阻塞。