这是一个基于 Python 的自动化测试工具集,专注于提供简单易用的接口测试解决方案。本项目旨在降低自动化测试的学习门槛,让测试人员能够快速上手并专注于测试用例的编写。
目前为该入行的新手想写写项目练手,该工具集都是参考前辈们的书籍或视频整理而来,如果侵权请联系我删除谢谢。
- Python 3.10 或更高版本
- Poetry 包管理工具(推荐)
- pip 包管理工具(可选)
- 支持控制台彩色输出和文件记录
- 自动创建日志目录和时间戳文件
- 提供装饰器用于记录函数执行情况
- 支持动态调整日志级别
- 日志文件自动轮转和保留策略
- 支持类方法和函数的运行时日志记录
- 支持所有标准 HTTP 方法(GET, POST, PUT, DELETE, PATCH 等)
- 自动会话管理和重试机制
- 请求响应详细日志记录
- 支持生成 curl 命令
- Unicode 文本自动处理
- 灵活的请求配置选项
- 断言结果管理
- 自动记录断言结果
- 支持批量验证
- 丰富的断言方法
- 相等性断言
- 包含关系断言
- 类型检查断言
- 自定义错误消息
- 支持 JSON 数据断言
- 路径值验证
- Schema 验证
- 正则匹配
- 多种缓存实现
- Redis 缓存
- LRU 内存缓存
- 磁盘缓存
- JSON文件缓存
- 缓存装饰器
- 函数结果缓存
- 类方法结果缓存
- 依赖函数缓存
- 缓存策略
- 过期时间控制
- 最大容量控制
- 自动清理机制
- 对称加密
- AES 加密
- DES 加密
- 非对称加密
- RSA 加密
- Hash 算法
- MD5
- SHA256
- Base64 编码解码
- 基础数据生成
- 数字类型
- 字符串类型
- 日期时间类型
- 布尔类型
- 业务数据生成
- 个人信息
- 地址信息
- 公司信息
- 网络信息
- 报告生成
- 离线HTML报告
- 资源文件内联
- 报告打包
- 报告发送
- 钉钉机器人
- 企业微信机器人
- 邮件发送
- 报告管理
- 自动清理历史报告
- 报告统计信息
- 报告模板定制
# 使用 Poetry 安装依赖
poetry install# 使用 pip 安装依赖
pip install -r requirements.txtfrom utils.log_util import my_logger
# 使用默认配置
logger = my_logger.logger
# 自定义日志级别
my_logger.set_level("INFO")
# 使用装饰器
@my_logger.runtime_logger
def your_function():
# 你的代码
pass
@my_logger.runtime_logger_class
class YourTestClass:
def test_something(self):
# 测试代码
passfrom utils.request_util import HttpClient
创建客户端实例
client = HttpClient(base_url="https://api.example.com")
发送 GET 请求
response = client.get("/users")
发送 POST 请求
response = client.post("/users", json_data={"name": "test"})
获取响应状态码
status = client.status_code
生成 curl 命令
curl_command = client.curl()from utils.assert_util import expect
# 基本断言
response = client.get("/api/users/1")
expect(response).status_code.to_equal(200)
# JSON 数据断言
expect(response).json.at("user.name").to_equal("张三")
expect(response).json.at("user.age").to_be_greater_than(18)
# Schema 验证
user_schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
},
"required": ["name", "age"]
}
expect(response).json.to_match_schema(user_schema)
# 正则匹配
expect(response).json.at("user.email").to_match(r"^[\w\.-]+@[\w\.-]+\.\w+$")
# 链式调用
expect(response)\
.status_code.to_equal(200)\
.json.at("user.name").to_equal("张三")\
.json.at("user.age").to_be_greater_than(18)from utils.random_util import PersonGenerator, AddressGenerator
# 创建生成器实例
person = PersonGenerator()
address = AddressGenerator()
# 生成个人信息
name = person.name()
phone = person.phone_number()
email = person.email()
# 生成地址信息
province = address.province()
city = address.city()
street = address.street_address()from utils.report_util import ReportManager
# 创建报告管理器
report_manager = ReportManager()
# 生成报告
report_path = report_manager.generate_offline_report()
# 发送报告
report_manager.send_report(
report_path=report_path,
title="测试报告",
to_dingtalk=True,
to_wechat=True,
to_email="test@example.com"
)from utils.cache_util import RedisCache, LRUCache
# 创建缓存实例
redis_cache = RedisCache()
memory_cache = LRUCache()
# 使用缓存装饰器
@redis_cache.cache(ttl=3600)
def get_user_info(user_id):
# 获取用户信息的逻辑
passproject/
├── utils/
│ ├── __init__.py
│ ├── log_util.py # 日志工具
│ ├── request_util.py # HTTP请求工具
│ ├── assert_util.py # 断言工具
│ ├── cache_util.py # 缓存工具
│ ├── encrypt_util.py # 加密解密工具
│ ├── random_util.py # 随机数据工具
│ ├── send_util.py # 消息发送工具
│ └── report_util.py # 报告工具
├── tests/
│ └── __init__.py
├── pyproject.toml
└── README.md
- 日志系统
- HTTP 请求模块
- 断言工具
- 缓存系统
- 加密解密工具
- 随机数据生成
- 消息发送工具
- 测试报告工具
- 数据驱动功能
- 配置管理系统
- 数据库工具
欢迎提交 Issue 和 Pull Request 来帮助改进项目。在提交代码前,请确保:
- 代码符合 PEP 8 规范
- 添加了适当的单元测试
- 更新了相关文档
MIT License
- 邮箱:2063685743@qq.com
- GitHub:[项目地址]