一次编写,多设备运行,崩溃自动捕获,测试效率翻倍!这个开源项目帮你摆脱手动回归的噩梦!
📌 文章目录
- 前言:你还在手动点 App 测试吗?
- 项目简介:一个开箱即用的自动化测试脚手架
- 核心特性一览
- 技术栈与运行环境
- 项目结构详解(附代码片段)
- 3 分钟快速上手实战
- 常见问题排雷指南
- 总结与互动
前言:你还在手动点 App 测试吗?
移动互联网时代,App 迭代快如闪电,但质量保障却成了很多团队的“阿喀琉斯之踵”:
- 每次发版前,测试人员要花半天甚至一天做回归测试,点得手指发麻;
- UI 频繁改动,自动化脚本跟着改到崩溃,维护成本高得离谱;
- 线上偶尔闪退,难以复现,开发只能靠猜;
- 多品牌、多系统版本兼容性测试,一台一台手动操作,效率低到让人怀疑人生。
如果你也正在被这些问题折磨,那么今天推荐的这款开源自动化测试框架,绝对值得你花 5 分钟好好看完——它来自开发者Prodryas,专为脉脉 App(Android 端)打造,但完全通用,稍作修改即可用于任何 Android 应用的自动化测试。
项目简介:一个开箱即用的自动化测试脚手架
项目名称:maimai-appium-tests(GitHub 已开源)
技术选型:Appium 2.0+Python 3.7++pytest
设计模式:经典的Page Object(页面对象)模式
核心能力:UI 功能验证 + 稳定性监控 + 崩溃自动检测
扩展能力:多设备并行执行 + 数据驱动 + 美观的 HTML 测试报告
简单说,这就是一个**“开箱即用”的自动化测试脚手架**,你只需配置好设备和账号,就能快速跑起一套完整的回归测试,还能接入 CI/CD 实现持续集成。
核心特性一览
| 特性 | 具体说明 |
|---|---|
| ✅Page Object 分层设计 | 页面元素与操作逻辑分离,脚本可读性高,维护成本低 |
| ✅智能等待 + 失败重试 | 内置显式等待和重试机制,极大降低因网络/渲染导致的不稳定 |
| ✅崩溃自动检测 | 自动识别 ANR、闪退对话框,并记录异常现场(日志+截图) |
| ✅全流程日志与截图 | 每个步骤都有详细日志,失败自动截图,问题定位像看回放一样轻松 |
| ✅数据驱动测试 | 支持 JSON / Excel 文件注入测试数据,一套脚本覆盖多种场景 |
| ✅多设备并行 | 借助pytest-xdist,可同时在多台真机/模拟器上运行,效率翻倍 |
| ✅HTML 测试报告 | 生成带截图链接的漂亮报告,领导看了都说好 |
| ✅CI/CD 就绪 | 自带 GitHub Actions 示例,轻松接入 Jenkins、GitLab CI 等 |
技术栈与运行环境
| 组件 | 版本要求 |
|---|---|
| Python | 3.7 及以上 |
| Appium Server | 2.0+(推荐使用 Appium Desktop) |
| Android 设备 | 8.0+ 真机或模拟器(需开启 USB 调试) |
| 依赖管理 | pip + requirements.txt |
| 测试框架 | pytest + pytest-xdist + pytest-html |
| 操作系统 | Windows / macOS / Linux 均可 |
项目结构详解(附代码片段)
整个项目结构清晰,层次分明,新人也能一眼看懂:
maimai-appium-tests/ ├── src/ │ ├── config/ # 配置文件(设备参数、测试账号等) │ ├── pages/ # Page Object 页面对象 │ │ ├── login_page.py │ │ └── home_page.py │ ├── utils/ # 工具模块(日志、崩溃检测、截图) │ └── tests/ # 测试用例 │ └── test_maimai.py ├── test_data/ # JSON / Excel 测试数据 ├── test_results/ # 运行日志、截图、HTML报告 ├── docs/ # 详细使用文档 ├── .github/workflows/ # GitHub Actions CI 配置 └── requirements.txt # Python 依赖清单🌟 代码示例:感受 Page Object 的魅力
页面对象(login_page.py):
fromappium.webdriver.common.appiumbyimportAppiumByclassLoginPage:# 定位器USERNAME_INPUT=(AppiumBy.ID,'com.aimi:id/et_username')PASSWORD_INPUT=(AppiumBy.ID,'com.aimi:id/et_password')LOGIN_BTN=(AppiumBy.ID,'com.aimi:id/btn_login')def__init__(self,driver):self.driver=driverdeflogin(self,username,password):self.driver.find_element(*self.USERNAME_INPUT).send_keys(username)self.driver.find_element(*self.PASSWORD_INPUT).send_keys(password)self.driver.find_element(*self.LOGIN_BTN).click()defis_logged_in(self):# 判断是否跳转到首页returnself.driver.find_element(AppiumBy.ID,'com.aimi:id/tab_home').is_displayed()测试用例(test_maimai.py):
importpytestfromsrc.pages.login_pageimportLoginPagedeftest_valid_login(driver):login_page=LoginPage(driver)login_page.login("13800138000","123456")assertlogin_page.is_logged_in(),"登录失败,未进入首页"这种分层设计,当 UI 变化时,你只需修改对应页面对象中的定位符,测试用例几乎不用改动,维护成本大大降低。
3 分钟快速上手实战
Step 1:克隆项目
gitclone https://github.com/Prodryas/maimai-appium-tests.gitcdmaimai-appium-testsStep 2:安装 Python 依赖
pipinstall-rrequirements.txtStep 3:启动 Appium Server
- 方式一(推荐):打开 Appium Desktop,点击 “Start Server”
- 方式二:命令行执行
appium(需提前npm install -g appium)
Step 4:配置测试参数
编辑src/config/config.py,填入你的:
- 设备
desired_caps(如 platformVersion、deviceName) - 测试账号、密码
- 其他自定义参数
Step 5:运行测试
# 运行全部测试用例pytest src/tests/# 运行指定文件pytest src/tests/test_maimai.py# 按关键词运行(如只测登录)pytest-klogin# 生成 HTML 报告pytest--html=test_results/report.html --self-contained-html运行完成后,在test_results/目录下即可查看日志、截图和报告。
常见问题排雷指南 {#常见问题排雷指南}
| 问题 | 解决方案 |
|---|---|
| Appium 无法启动会话 | ① 确认 Appium Server 已启动;② 检查appPackage和appActivity是否正确;③ 尝试添加"noReset": true |
| 元素定位失败 | ① 使用 Appium Inspector 重新获取resource-id或 XPath;② 避免依赖text等易变属性;③ 检查是否处于 WebView 上下文(需driver.switch_to.context) |
| 并行执行冲突 | 确保每个设备使用独立的端口(systemPort、chromeDriverPort等),并在配置中区分 |
| 测试报告无截图 | 确认conftest.py中已添加pytest_runtest_makereport钩子,并在失败时调用截图工具 |
| 中文输入乱码 | 在 desired_caps 中添加"unicodeKeyboard": True和"resetKeyboard": True |
总结与互动 {#总结与互动}
这个开源项目真正做到了“低门槛、高产出”,无论你是:
- 测试工程师—— 想摆脱重复劳动,提升个人价值;
- 开发工程师—— 想为自己的 App 加上自动化质量防线;
- 在校学生—— 想系统学习 Appium + Python 的实战技巧;
它都值得你Star ⭐ 收藏,并花一个下午跑起来体验一下。
👉项目地址:https://github.com/Prodryas/maimai-appium-tests
如果这篇文章对你有帮助,欢迎点赞、评论、转发,让更多需要的朋友看到!
也欢迎在评论区留下你的使用心得或遇到的问题,我会尽力帮你解答~
Happy Testing! 让自动化解放我们的双手!🚀
版权声明:本文为 CSDN 博主昨夜星河入梦来的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。