使用说明
自动化测试框架
A. 生产就绪自动化框架 通过人工智能驱动的测试维护、预定的CI运行和Telegram通知。
目录
手动和自动化STP
概述
该项目展示了 专业级自动化测试 与:
- 干净的生产风格代码 页面对象模型+工作流分离
- UI+API测试 -用于浏览器测试的Playwright,用于REST端点的基于请求的API层
- 基于XML的配置 用于灵活、无代码的环境管理
- AI 代理 自动分析和修复失败的测试
- AI报告分析 --Claude Sonnet阅读每份报告,并向Telegram发送可操作的见解
- 计划CI 通过GitHub Actions(每天运行,向Telegram报告)
- 综合报告 使用Allure+Markdown报告
主要特点
动态配置
- 基于XML的配置(
data.xml)--浏览器、环境、无头、重试等。 - CLI参数在运行时重写
- 无需更改代码以适应不同的环境
AI驱动的测试维护
- Claude代理SDK 整合(
claude-haiku-4-5) - 自动读取失败的测试,确定根本原因,应用最小修复
- 修复后仅重新运行失败的测试以进行验证
- 通过以下方式选择加入
--ai-fixflag——未经明确许可,从不运行
AI报告分析
- 克劳德·十四行诗 (
claude-sonnet-4-6)每次运行后读取生成的报告 - 确定根本原因、故障模式,并提供具体建议
- 摘要后立即作为单独的电报消息发送
- 通过以下方式选择加入
--ai-analysisflag——未经明确许可,从不运行
通过电报通知安排CI
- GitHub Actions工作流每天02:00 UTC运行
- GitHub UI提供手动调度功能(带标记过滤器和AI切换)
- 向Telegram发送摘要消息、可选的AI分析和完整的Markdown报告
整洁架构
- 页面对象+工作流 设计模式
- 集中式页面管理(
manage_pages.py) - 可重复使用的夹具、公用设施和类型化配置
技术栈
| 组件 | 技术 |
|---|---|
| 语言 | Python 3.12+ |
| 测试运行器 | Pytest |
| 浏览器自动化 | 剧作家 |
| API测试 | 请求+GoRest API |
| 测试设计 | 页面对象+工作流 |
| 配置系统 | XML(data.xml) + config_loader.py |
| 报告 | 诱惑+Markdown(reports/) |
| AI修复代理 | Claude代理SDK(claude-haiku-4-5) |
| AI分析 | 克劳德·索内特(claude-sonnet-4-6)通过无烟煤API |
| CI/CD | GitHub操作(计划+手动调度) |
| 通知 | 电报机器人API |
项目结构
automation/
├── automated_test_runner.py # AI-powered scheduled test runner
│
├── .github/
│ └── workflows/
│ └── scheduled_test_runner.yml # GitHub Actions — daily + manual
│
├── configuration/
│ └── data.xml # Main config (browser, env, headless…)
│
├── utilities/
│ ├── config_loader.py # Loads & normalizes XML config
│ ├── manage_pages.py # Central Page Objects manager
│ └── logger.py
│
├── page_objects/
│ ├── login_page.py
│ ├── inventory_page.py
│ ├── cart_page.py
│ └── checkout_page.py
│
├── api_objects/
│ └── users_api.py # API Object for GoRest /users endpoints
│
├── workflows/
│ ├── web_workflow.py # UI workflows (login, cart, checkout…)
│ └── api_workflow.py # API workflows (CRUD user flows)
│
├── test_cases/
│ ├── conftest.py # Fixtures, browser setup, trace/screenshot
│ ├── test_saucedemo.py # 20 UI tests (Login, Products, Cart…)
│ ├── test_api.py # 10 API tests (Users CRUD, validation)
│ ├── test_selectors.py # 24 Page Object selector validation tests
│ ├── test_login.py
│ └── test_web.py
│
├── reports/ # Generated Markdown reports
├── requirements.txt
└── requirements.flex.txt # Flexible deps for CI/AI agent
入门指南
先决条件
- Python 3.12+
- 点
安装
# Clone the repository
git clone https://github.com/gilkalman-portfolio/automation.git
cd automation
# Install dependencies
pip install -r requirements.flex.txt
# Install Playwright browsers
python -m playwright install chromium
环境变量(局部)
创建一个 .env 项目根目录中的文件:
# .env — never commit this file
ANTHROPIC_API_KEY=sk-ant-... # required for --ai-fix and --ai-analysis
TELEGRAM_BOT_TOKEN=123456:ABC... # required for Telegram notifications
TELEGRAM_CHAT_ID=-100123456789 # your chat or group ID
GOREST_TOKEN=your_token_here # free token from gorest.co.in
配置
编辑 configuration/data.xml 控制运行时行为:
<config>
<run>
<env>stg</env>
<headless>true</headless>
<browsers>chromium</browsers> <!-- chromium | firefox | webkit -->
<retries>1</retries>
<trace>retain-on-failure</trace>
<screenshot>only-on-failure</screenshot>
</run>
<environments>
<stg baseUrl="https://www.saucedemo.com/" apiUrl="https://gorest.co.in/public/v2"/>
</environments>
</config>
还支持CLI覆盖:
pytest --env=prod --browsers=firefox --headless=true
用法
运行所有测试
pytest
按标记运行
pytest -m smoke
pytest -m regression
pytest -m api
使用Allure报告运行
pytest --alluredir=allure-results
allure serve allure-results
自动测试运行器
automated_test_runner.py 运行一个完整的循环:
1. Run pytest → capture JSON + JUnit XML results
2. If failures + --ai-fix → Claude Agent analyses and fixes
3. Re-run only the failed tests to verify fixes
4. Generate Markdown report → reports/report_YYYYMMDD_HHMMSS.md
5. If --ai-analysis → Claude Sonnet reads the report and produces insights
6. Send summary + AI analysis (optional) + report file to Telegram
命令
# Single run — always works, no API key needed
python automated_test_runner.py
# Smoke tests only
python automated_test_runner.py -m smoke
# With AI auto-fix (requires ANTHROPIC_API_KEY)
python automated_test_runner.py --ai-fix
# With AI report analysis sent to Telegram (requires ANTHROPIC_API_KEY)
python automated_test_runner.py --ai-analysis
# Both flags together
python automated_test_runner.py --ai-fix --ai-analysis
# Scheduled loop every 24 hours (local)
python automated_test_runner.py --schedule
# Custom interval
python automated_test_runner.py --schedule --interval-hours 6
报告示例
# Automated Test Report — 20260407_020315
Status: ✅ ALL PASSING
Duration: 42.3s
| Metric | Before | After |
|----------|--------|-------|
| ✅ Passed | 18 | 20 |
| ❌ Failed | 2 | 0 |
| 🔧 Fixed | — | 2 |
CI/CD--GitHub操作
工作流程 .github/workflows/scheduled_test_runner.yml 自动运行:
| 触发器 | 何时 |
|---|---|
| 日程 | 每天02:00 UTC |
| 人工调度 | GitHub用户界面→ 行动→ 运行工作流 |
所需机密(GitHub→ 设置→ 秘密→ 行动)
| 秘密 | 目的 |
|---|---|
TELEGRAM_BOT_TOKEN |
来自@BotFather的Telegram机器人令牌 |
TELEGRAM_CHAT_ID |
目标聊天/群ID |
ANTHROPIC_API_KEY |
Claude API密钥(对于 ai_fix=true 和 ai_analysis=true) |
手动调度选项
- 标记 --过滤器测试:
smoke/regression/sanity/空白(全部) - ai_fix —
true启用Claude AI自动修复(需要ANTHROPIC_API_KEY) - ai分析 —
true启用发送到Telegram的Claude Sonnet报告分析(需要ANTHROPIC_API_KEY)
联系
吉尔·卡尔曼
电话:050-6323576
github: github/gilkarman-portfolio/automation
许可证
此项目是为 投资组合和演示目的.