Skip to main content

基于交互模式的现代化测试自动化框架,支持多种测试场景

Project description

DF Test Framework

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

PyPI version Python License


核心特性

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

安装

# 基础安装
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]          # 所有功能

快速开始

脚手架创建项目

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

手动使用

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

异步高性能模式

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 仓库


许可证

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

df_test_framework-3.28.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

df_test_framework-3.28.1-py3-none-any.whl (482.4 kB view details)

Uploaded Python 3

File details

Details for the file df_test_framework-3.28.1.tar.gz.

File metadata

  • Download URL: df_test_framework-3.28.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for df_test_framework-3.28.1.tar.gz
Algorithm Hash digest
SHA256 4507885e89e65f7ad2d20e90af9a793c0326559b29c6256473eca273d54f8a29
MD5 57ca3a59167e7771aa3c4a078143805a
BLAKE2b-256 5a5dc0fbc1c6ed1289311ec6863f38d50210a10d889db1cff6f1a70f98f6e36c

See more details on using hashes here.

File details

Details for the file df_test_framework-3.28.1-py3-none-any.whl.

File metadata

File hashes

Hashes for df_test_framework-3.28.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f91c5f613c72ffb6772917de2487174e93dcfbdc9c734aa8446589402bc9e7ee
MD5 2a7bc71d81173739467a3a61dc2efe4f
BLAKE2b-256 3eb1ad3a09febc856beacb07d31c19aee4b4af3abc79ba3c9b3f1f361b1c2c18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page