Metadata-Version: 2.4
Name: df-test-framework
Version: 3.35.5
Summary: 基于交互模式的现代化测试自动化框架，支持多种测试场景
Project-URL: Homepage, https://github.com/yourorg/df-test-framework
Project-URL: Repository, https://github.com/yourorg/df-test-framework
Project-URL: Documentation, https://github.com/yourorg/df-test-framework#readme
Project-URL: Bug Tracker, https://github.com/yourorg/df-test-framework/issues
Author-email: DF QA Team <qa@example.com>
License: MIT
Keywords: api,automation,framework,pytest,testing,ui
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Pytest
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.12
Requires-Dist: allure-pytest>=2.13.0
Requires-Dist: assertpy>=1.1
Requires-Dist: faker>=38.2.0
Requires-Dist: h2>=4.3.0
Requires-Dist: hpack>=4.1.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: hyperframe>=6.1.0
Requires-Dist: jsonpath-ng>=1.7.0
Requires-Dist: jsonschema-spec>=0.2.4
Requires-Dist: jsonschema>=4.25.1
Requires-Dist: loguru>=0.7.0
Requires-Dist: openpyxl>=3.1.0
Requires-Dist: pluggy>=1.5.0
Requires-Dist: prance[osv]>=23.6.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pymysql>=1.1.0
Requires-Dist: pytest-asyncio>=1.3.0
Requires-Dist: pytest-timeout>=2.2.0
Requires-Dist: pytest>=9.0.1
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: questionary>=2.0.0
Requires-Dist: redis>=5.0.0
Requires-Dist: sqlalchemy>=2.0.0
Provides-Extra: all
Requires-Dist: boto3>=1.34.0; extra == 'all'
Requires-Dist: confluent-kafka>=2.12.0; extra == 'all'
Requires-Dist: opentelemetry-api>=1.20.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.41b0; extra == 'all'
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'all'
Requires-Dist: oss2>=2.18.0; extra == 'all'
Requires-Dist: pika>=1.3.0; extra == 'all'
Requires-Dist: playwright>=1.40.0; extra == 'all'
Requires-Dist: prometheus-client>=0.19.0; extra == 'all'
Requires-Dist: rocketmq-python-client>=5.0.0; extra == 'all'
Requires-Dist: selenium>=4.0.0; extra == 'all'
Provides-Extra: kafka
Requires-Dist: confluent-kafka>=2.12.0; extra == 'kafka'
Provides-Extra: mq
Requires-Dist: confluent-kafka>=2.12.0; extra == 'mq'
Requires-Dist: pika>=1.3.0; extra == 'mq'
Requires-Dist: rocketmq-python-client>=5.0.0; extra == 'mq'
Provides-Extra: observability
Requires-Dist: opentelemetry-api>=1.20.0; extra == 'observability'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.41b0; extra == 'observability'
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'observability'
Requires-Dist: prometheus-client>=0.19.0; extra == 'observability'
Provides-Extra: opentelemetry
Requires-Dist: opentelemetry-api>=1.20.0; extra == 'opentelemetry'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.41b0; extra == 'opentelemetry'
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'opentelemetry'
Provides-Extra: prometheus
Requires-Dist: prometheus-client>=0.19.0; extra == 'prometheus'
Provides-Extra: rabbitmq
Requires-Dist: pika>=1.3.0; extra == 'rabbitmq'
Provides-Extra: rocketmq
Requires-Dist: rocketmq-python-client>=5.0.0; extra == 'rocketmq'
Provides-Extra: storage
Requires-Dist: boto3>=1.34.0; extra == 'storage'
Requires-Dist: oss2>=2.18.0; extra == 'storage'
Provides-Extra: ui
Requires-Dist: playwright>=1.40.0; extra == 'ui'
Requires-Dist: selenium>=4.0.0; extra == 'ui'
Description-Content-Type: text/markdown

# DF Test Framework

> 简单、强大、可扩展的现代化 Python 测试自动化框架

[![PyPI version](https://img.shields.io/pypi/v/df-test-framework.svg)](https://pypi.org/project/df-test-framework/)
[![Python](https://img.shields.io/badge/python-3.12+-green.svg)](https://www.python.org/)
[![License](https://img.shields.io/badge/license-MIT-orange.svg)](https://github.com/yourorg/test-framework/blob/master/LICENSE)

---

## 核心特性

- **HTTP 客户端** - 同步/异步，拦截器链，自动重试
- **GraphQL/gRPC 客户端** - 完整协议支持
- **数据库访问** - SQLAlchemy 2.0，Repository + UnitOfWork 模式
- **消息队列** - Kafka/RabbitMQ/RocketMQ 统一接口
- **存储客户端** - LocalFile/S3/阿里云 OSS
- **可观测性** - OpenTelemetry 追踪 + Prometheus 监控
- **测试工具** - Fixtures、数据构建器、Mock 工具、Allure 集成

---

## 安装

```bash
# 基础安装
pip install df-test-framework

# 可选依赖
pip install df-test-framework[ui]           # UI 测试（Playwright）
pip install df-test-framework[mq]           # 消息队列
pip install df-test-framework[observability] # 可观测性
pip install df-test-framework[storage]      # 存储客户端
pip install df-test-framework[all]          # 所有功能
```

---

## 快速开始

### 脚手架创建项目

```bash
df-test init my-test-project
cd my-test-project
cp .env.example .env
pytest -v
```

### 手动使用

```python
from df_test_framework import Bootstrap, FrameworkSettings
from pydantic import Field

class DemoSettings(FrameworkSettings):
    api_base_url: str = Field(default="https://api.example.com")

runtime = (
    Bootstrap()
    .with_settings(DemoSettings)
    .build()
    .run()
)

http = runtime.http_client()
response = http.get("/users/1")
assert response.status_code == 200
```

### 异步高性能模式

```python
import asyncio
from df_test_framework import AsyncHttpClient

async def test_concurrent():
    async with AsyncHttpClient("https://api.example.com") as client:
        tasks = [client.get(f"/users/{i}") for i in range(100)]
        responses = await asyncio.gather(*tasks)
        assert len(responses) == 100

asyncio.run(test_concurrent())
```

---

## 架构

```
Layer 4 ─ extensions/        # Pluggy 扩展系统
Layer 3 ─ testing/           # Fixtures、数据构建、插件
Layer 2 ─ infrastructure/    # Bootstrap、配置、日志、Runtime
Layer 1 ─ clients/…          # HTTP、数据库、消息、存储
Layer 0 ─ common/            # 异常与基础类型
```

---

## 文档

完整文档请访问 [GitHub 仓库](https://github.com/yourorg/test-framework)：

- [快速开始指南](https://github.com/yourorg/test-framework/blob/master/docs/user-guide/QUICK_START_V3.5.md)
- [完整用户手册](https://github.com/yourorg/test-framework/blob/master/docs/user-guide/USER_MANUAL.md)
- [API 参考](https://github.com/yourorg/test-framework/tree/master/docs/api-reference)
- [版本发布说明](https://github.com/yourorg/test-framework/tree/master/docs/releases)

---

## 许可证

MIT License
