自动化测试框架

一个支持AI测试维护、定时CI运行和Telegram通知的生产级自动化测试框架。

  • by gilkalman-portfolio
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gilkalman-portfolio/automation

使用说明

自动化测试框架

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-fix flag——未经明确许可,从不运行

AI报告分析

  • 克劳德·十四行诗 (claude-sonnet-4-6)每次运行后读取生成的报告
  • 确定根本原因、故障模式,并提供具体建议
  • 摘要后立即作为单独的电报消息发送
  • 通过以下方式选择加入 --ai-analysis flag——未经明确许可,从不运行

通过电报通知安排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


许可证

此项目是为 投资组合和演示目的.