App的UI自动化测试项目结构示例

以下是一个基于企业级标准的App UI自动化测试项目结构示例,结合持续集成(CI/CD)流程设计,代码框架和模块职责说明如下:

项目结构说明

app_ui_auto/
├── configs/                  # 配置管理
│   ├── devices.yaml          # 设备配置(UDID、系统版本等)
│   ├── app_config.py         # App包路径、启动参数
│   └── ci_config.json        # CI/CD流水线配置
├── test_cases/               # 测试用例
│   ├── login/                # 按功能模块划分
│   │   ├── test_login.py     # 登录功能测试用例
│   │   └── data/             # 测试数据(JSON/CSV)
│   └── order/
│       └── test_order.py     # 订单功能测试用例
├── page_objects/             # 页面对象模型(POM)
│   ├── base_page.py          # 基础页面类(封装公共方法)
│   ├── login_page.py         # 登录页面元素和操作
│   └── home_page.py          # 首页元素和操作
├── utils/                     # 工具类
│   ├── driver_manager.py     # Appium驱动管理(单例模式)
│   ├── report_utils.py       # Allure报告生成
│   ├── permission_handler.py # 权限弹窗处理[2,6](@ref)
│   └── adb_utils.py          # ADB命令封装
├── reports/                  # 测试报告
│   ├── allure/               # Allure原始数据
│   └── html_report/          # 最终HTML报告
├── ci_cd/                    # CI/CD脚本
│   ├── Jenkinsfile           # Jenkins流水线定义
│   └── gitlab-ci.yml         # GitLab CI配置
└── requirements.txt          # 依赖库清单

核心模块功能说明

1. ​Configs(配置管理)​
  • devices.yaml:定义多设备参数(如UDID、平台版本),支持多设备并行测试。
  • app_config.py:动态加载App安装包路径、启动Activity及Capabilities配置。
  • ci_config.json:定义CI/CD触发条件(如分支合并后自动执行回归测试)。
2. ​Test Cases(测试用例)​

# page_objects/login_page.py
from appium.webdriver.common.mobileby import MobileBy
from .base_page import BasePage

class LoginPage(BasePage):
    USERNAME_FIELD = (MobileBy.ID, "com.example:id/username")
    PASSWORD_FIELD = (MobileBy.ACCESSIBILITY_ID, "密码输入框")
    
    def enter_credentials(self, username, password):
        self.find_element(self.USERNAME_FIELD).send_keys(username)
        self.find_element(self.PASSWORD_FIELD).send_keys(password)
4. ​Utils(工具类)​

5. ​CI/CD(持续集成)​

groovy

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps { git 'https://github.com/your-repo' }
        }
        stage('Run Tests') {
            steps {
                sh 'pytest test_cases/ --alluredir=reports/allure'
            }
        }
        stage('Generate Report') {
            steps {
                allure includeProperties: false, jdk: '', results: [[path: 'reports/allure']]
            }
        }
    }
}


引用说明

  • 采用 pytest 框架编写,结合 @pytest.mark.parametrize 实现数据驱动测试。
  • 示例代码片段:
    # test_cases/login/test_login.py
    import pytest
    from page_objects.login_page import LoginPage
    
    class TestLogin:
        @pytest.mark.ci_smoke  # 标记为CI流水线的冒烟测试
        def test_valid_login(self, appium_driver):
            login_page = LoginPage(appium_driver)
            login_page.enter_credentials("user@example.com", "Pass123")
            login_page.click_submit()
            assert login_page.is_welcome_displayed(), "登录成功提示未显示"
    3. ​Page Objects(页面对象模型)​
  • 封装元素定位和操作,降低代码冗余。
  • 示例代码:
  • Driver Manager:实现Appium驱动的动态创建与销毁,支持多线程安全。
  • Permission Handler:处理系统弹窗(如相机权限请求),结合图像识别或XPath定位。
  • ADB Utils:封装设备操作命令(如安装/卸载App、截图)。
  • Jenkinsfile:定义多阶段流水线(构建→测试→部署→通知)。
  • GitLab CI:与SonarQube集成实现代码质量门禁。
  • 分层架构设计

    • 数据层:YAML/JSON管理测试数据,与代码分离。
    • 业务层:Page Object模式隔离UI变化风险。
    • 执行层:CI/CD工具自动化触发测试。
  • 安全与性能优化

    • 使用Vault或KMS加密敏感数据(如账号密码)。
    • 通过Appium Grid实现分布式测试,提升执行效率。
  • 报告与监控

    • Allure报告集成错误截图和日志追踪。
    • Prometheus + Grafana监控测试执行成功率。
  • 设备管理参考了Appium多设备策略;
  • 分层设计借鉴了Selenium企业级项目结构;
  • CI/CD流程融合了Jenkins和GitLab最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值