{"id":37674474,"url":"https://github.com/ljxpython/pytest_framework","last_synced_at":"2026-01-16T12:10:10.534Z","repository":{"id":260505333,"uuid":"862171524","full_name":"ljxpython/pytest_framework","owner":"ljxpython","description":"一个基础的自动化测试框架,可以在这个框架基础上进行二次开发","archived":false,"fork":false,"pushed_at":"2025-08-26T05:20:54.000Z","size":1637,"stargazers_count":10,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-26T06:22:16.253Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ljxpython.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-24T06:51:27.000Z","updated_at":"2025-08-26T05:20:58.000Z","dependencies_parsed_at":"2025-08-26T06:14:47.875Z","dependency_job_id":"f429a466-ba93-430a-b0ea-e8d1ca2dfef8","html_url":"https://github.com/ljxpython/pytest_framework","commit_stats":null,"previous_names":["ljxpython/pytest_framework"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ljxpython/pytest_framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fpytest_framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fpytest_framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fpytest_framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fpytest_framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ljxpython","download_url":"https://codeload.github.com/ljxpython/pytest_framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fpytest_framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T12:10:10.453Z","updated_at":"2026-01-16T12:10:10.520Z","avatar_url":"https://github.com/ljxpython.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Pytest Framework - 现代化接口测试自动化框架\n\n\u003cdiv align=\"center\"\u003e\n\n![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)\n![Pytest](https://img.shields.io/badge/Pytest-8.0+-green.svg)\n![License](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Build](https://img.shields.io/badge/Build-Passing-brightgreen.svg)\n![Coverage](https://img.shields.io/badge/Coverage-90%25-brightgreen.svg)\n\n**一个功能强大、易于扩展的Python接口测试自动化框架**\n\n[快速开始](#-快速开始) • [文档](#-文档) • [贡献](#-贡献)\n\n\u003c/div\u003e\n\n---\n\n## ✨ 核心特性\n\n### 🎯 **开箱即用**\n- 🔧 **零配置启动** - 5分钟快速上手，无需复杂配置\n- 📦 **丰富的内置功能** - HTTP客户端、断言、数据驱动、Mock服务器\n- 🎨 **优雅的API设计** - 链式调用，代码简洁易读\n\n### 🚀 **高级功能**\n- 🔍 **增强断言引擎** - 基于JMESPath的强大查询和Schema验证\n- 📊 **数据驱动测试** - Excel、CSV、JSON、YAML多格式支持\n- 🎭 **内置Mock服务器** - 轻量级Mock服务，支持复杂场景\n- ⚡ **性能测试** - 负载测试、压力测试、性能监控\n\n### 🏗️ **企业级架构**\n- 🌍 **多环境管理** - 开发、测试、生产环境无缝切换\n- 🔌 **插件化扩展** - 灵活的插件机制，支持自定义扩展\n- 📈 **全面监控** - 详细的日志记录和性能指标\n- 🛡️ **安全可靠** - 认证支持、敏感数据保护\n\n## 🎬 快速预览\n\n### 简洁的测试用例\n\n```python\nfrom src.client.base_client import BaseClient\nfrom src.utils.assertion import assert_success_response\nfrom src.utils.environment import get_base_url\n\nclass TestUserAPI:\n    def setup_method(self):\n        self.client = BaseClient(get_base_url())\n\n    def test_create_user(self):\n        user_data = {\"name\": \"张三\", \"email\": \"zhangsan@example.com\"}\n        response = self.client.post(\"/users\", json=user_data)\n\n        # 基于JMESPath的链式断言，优雅简洁\n        (assert_success_response(response, 201)\n         .assert_jmespath(\"data.name\", \"张三\")\n         .assert_jmespath(\"data.email\", \"zhangsan@example.com\")\n         .assert_response_time(2.0, response.elapsed.total_seconds()))\n```\n\n### 数据驱动测试\n\n```python\nfrom src.utils.data_driver import data_driver\n\n# 生成测试数据\ntemplate = {\n    \"name\": \"faker.name\",\n    \"email\": \"faker.email\",\n    \"phone\": \"faker.phone_number\"\n}\ntest_users = data_driver.generate_test_data(template, count=10)\n\n@pytest.mark.parametrize(\"user_data\", test_users)\ndef test_batch_create_users(self, user_data):\n    response = self.client.post(\"/users\", json=user_data)\n    assert_success_response(response, 201)\n```\n\n### Mock服务器\n\n```python\nfrom src.utils.mock_server import MockServer, create_mock_response\n\n# 启动Mock服务器\nmock_server = MockServer(port=8888)\nmock_server.add_rule(\n    \"GET\", \"/api/users/123\",\n    create_mock_response(200, {\"id\": 123, \"name\": \"张三\"})\n).start()\n```\n\n### 性能测试\n\n```python\nfrom src.utils.performance import load_test\n\ndef api_request():\n    return requests.get(\"https://api.example.com/users\")\n\n# 负载测试：10个并发用户，100个请求\nmetrics = load_test(api_request, concurrent_users=10, total_requests=100)\nprint(f\"平均响应时间: {metrics.avg_response_time}s\")\nprint(f\"QPS: {metrics.requests_per_second}\")\n```\n\n## 🚀 快速开始\n\n### 1. 安装框架\n\n```bash\n# 克隆项目\ngit clone https://github.com/ljxpython/pytest_framework.git\ncd pytest-framework\n\n# 安装依赖（推荐使用Poetry）\npoetry install \u0026\u0026 poetry shell\n\n# 或使用pip\npip install -r requirements.txt\n```\n\n### 2. 配置环境\n\n编辑 `conf/settings.yaml`：\n\n```yaml\nboe:  # 开发环境\n  API:\n    base_url: \"https://httpbin.org\"\n    timeout: 30\n  DEBUG: true\n```\n\n### 3. 运行测试\n\n```bash\n# 运行示例测试\npytest tests/examples/ -v\n\n# 生成Allure报告\npytest --alluredir=output/allure-result\nallure generate output/allure-result -o output/allure-report --clean\n```\n\n### 4. 查看报告\n\n打开 `output/allure-report/index.html` 查看详细测试报告。\n\n## 📚 文档\n\n| 文档类型 | 链接 | 描述 |\n|---------|------|------|\n| 📖 **快速开始** | [docs/quick-start/](./docs/quick-start/) | 5分钟快速上手指南 |\n| 🏗️ **架构设计** | [docs/architecture/](./docs/architecture/) | 框架架构和设计理念 |\n| 📋 **用户指南** | [docs/user-guide/](./docs/user-guide/) | 详细功能使用指南 |\n| 🔧 **API参考** | [docs/api-reference/](./docs/api-reference/) | 完整API文档 |\n| 💡 **最佳实践** | [docs/best-practices/](./docs/best-practices/) | 测试最佳实践 |\n| 🔌 **扩展开发** | [docs/extension/](./docs/extension/) | 插件和扩展开发 |\n\n## 🎯 示例项目\n\n### 基础示例\n\n```python\n# tests/examples/basic_example.py\nclass TestBasicAPI:\n    \"\"\"基础API测试示例\"\"\"\n\n    def test_get_users(self):\n        \"\"\"获取用户列表\"\"\"\n        response = self.client.get(\"/users\")\n        assert_success_response(response)\n        assert len(response.json()[\"data\"]) \u003e 0\n\n    def test_create_user(self):\n        \"\"\"创建用户\"\"\"\n        user_data = {\"name\": \"测试用户\", \"email\": \"test@example.com\"}\n        response = self.client.post(\"/users\", json=user_data)\n        assert_success_response(response, 201)\n```\n\n### 高级示例\n\n```python\n# tests/examples/advanced_example.py\nclass TestAdvancedFeatures:\n    \"\"\"高级功能示例\"\"\"\n\n    @pytest.mark.parametrize(\"user_data\", load_test_data(\"users.json\"))\n    def test_data_driven(self, user_data):\n        \"\"\"数据驱动测试\"\"\"\n        response = self.client.post(\"/users\", json=user_data)\n        (assert_success_response(response, 201)\n         .assert_json_path(\"$.data.name\", user_data[\"name\"])\n         .assert_schema(USER_SCHEMA))\n\n    @pytest.mark.performance\n    def test_performance(self):\n        \"\"\"性能测试\"\"\"\n        metrics = load_test(\n            lambda: self.client.get(\"/users\"),\n            concurrent_users=10,\n            total_requests=100\n        )\n        assert metrics.avg_response_time \u003c 1.0\n        assert metrics.error_rate \u003c 0.01\n```\n\n## 🏗️ 项目结构\n\n```\npytest-framework/\n├── 📁 conf/                    # 配置管理\n│   ├── config.py              # 配置管理器\n│   ├── constants.py           # 常量定义\n│   └── settings.yaml          # 环境配置\n├── 📁 src/                     # 核心源码\n│   ├── 📁 client/             # HTTP客户端\n│   │   ├── base_client.py     # 基础客户端\n│   │   └── base_auth.py       # 认证处理\n│   ├── 📁 model/              # 数据模型\n│   │   ├── auto_pytest.py    # 测试模型\n│   │   └── modelsbase.py      # 基础模型\n│   └── 📁 utils/              # 工具类库\n│       ├── assertion.py       # 增强断言\n│       ├── data_driver.py     # 数据驱动\n│       ├── environment.py     # 环境管理\n│       ├── mock_server.py     # Mock服务器\n│       ├── performance.py     # 性能测试\n│       └── log_moudle.py      # 日志管理\n├── 📁 tests/                   # 测试用例\n│   ├── conftest.py            # pytest配置\n│   ├── 📁 examples/           # 示例测试\n│   ├── 📁 test_user/          # 用户模块测试\n│   └── 📁 test_goods/         # 商品模块测试\n├── 📁 docs/                    # 项目文档\n├── 📁 output/                  # 测试输出\n│   ├── 📁 allure-result/      # Allure原始数据\n│   └── 📁 allure-report/      # Allure报告\n├── 📄 main.py                  # 主入口文件\n├── 📄 pytest.ini              # pytest配置\n├── 📄 pyproject.toml           # 项目配置\n└── 📄 README.md                # 项目说明\n```\n\n## 🌟 核心优势\n\n### 🎯 **为测试工程师而生**\n- **低学习成本** - 基于pytest，测试工程师快速上手\n- **高开发效率** - 丰富的内置功能，减少重复代码\n- **强大的断言** - 支持复杂的数据验证场景\n- **完善的报告** - Allure集成，美观的测试报告\n\n### 🏢 **企业级特性**\n- **多环境支持** - 开发、测试、生产环境配置管理\n- **团队协作** - 统一的代码规范和最佳实践\n- **CI/CD集成** - 无缝集成Jenkins、GitHub Actions\n- **可扩展架构** - 插件机制支持定制化需求\n\n### 🚀 **性能卓越**\n- **并发执行** - 支持多进程并行测试\n- **连接复用** - HTTP连接池提升性能\n- **内存优化** - 大数据量测试场景优化\n- **性能监控** - 实时监控测试执行性能\n\n## 🛠️ 技术栈\n\n| 技术 | 版本 | 用途 |\n|------|------|------|\n| **Python** | 3.8+ | 核心开发语言 |\n| **Pytest** | 8.0+ | 测试框架 |\n| **JMESPath** | 1.0+ | JSON查询语言（核心技术栈） |\n| **Requests** | 2.32+ | HTTP客户端 |\n| **Allure** | 2.13+ | 测试报告 |\n| **Dynaconf** | 3.2+ | 配置管理 |\n| **Faker** | 29.0+ | 测试数据生成 |\n| **Loguru** | 0.7+ | 日志管理 |\n\n## 📊 性能基准\n\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| **启动时间** | \u003c 2s | 框架初始化时间 |\n| **并发支持** | 100+ | 最大并发用户数 |\n| **内存占用** | \u003c 100MB | 基础运行内存 |\n| **测试速度** | 100+/min | 每分钟执行测试数 |\n\n\n\n## 🤝 贡献\n\n我欢迎所有形式的贡献！无论是：\n\n- 🐛 **报告Bug** - 发现问题请提交Issue\n- 💡 **功能建议** - 有好想法请告诉我们\n- 📝 **文档改进** - 帮助完善文档\n- 🔧 **代码贡献** - 提交Pull Request\n\n### 贡献步骤\n\n1. **Fork** 项目到您的GitHub\n2. **创建** 功能分支 (`git checkout -b feature/AmazingFeature`)\n3. **提交** 更改 (`git commit -m 'Add some AmazingFeature'`)\n4. **推送** 到分支 (`git push origin feature/AmazingFeature`)\n5. **创建** Pull Request\n\n\n## 📄 许可证\n\n本项目采用 MIT 许可证\n\n\n\n## 🙏 致谢\n\n感谢所有为这个项目做出贡献的开发者和用户！\n\n特别感谢以下开源项目：\n- [Pytest](https://pytest.org/) - 优秀的Python测试框架\n- [Requests](https://requests.readthedocs.io/) - 简洁的HTTP库\n- [Allure](https://allurereport.org/) - 美观的测试报告工具\n\n---\n\n\u003cdiv align=\"center\"\u003e\n**如果这个项目对您有帮助，请给我们一个 ⭐ Star！**\n\n**让更多的测试工程师受益于这个框架！**\n\n也欢迎和您进行微信交流:\n\n\u003cimg src=\"docs/assets/image-20250531212549739.png\" alt=\"Description\" width=\"300\"/\u003e\n\n\n[⬆ 回到顶部](#-pytest-framework---现代化接口测试自动化框架)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljxpython%2Fpytest_framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fljxpython%2Fpytest_framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljxpython%2Fpytest_framework/lists"}