基于飞书(Lark)多维表格的现代化接口自动化测试解决方案
这是一个创新的接口自动化测试框架,将测试用例管理与飞书多维表格深度集成,实现了可视化测试管理和实时结果回写。通过表格化的测试用例管理,让非技术人员也能轻松参与接口测试,同时为技术团队提供强大的自动化执行能力。
- 🔥 零学习成本: 在熟悉的多维表格中管理测试用例
- 🚀 现代化架构: 基于原始baseopensdk重构,支持最新Python版本
- 🔐 简化认证: 只需personal_token,无需复杂应用配置
- 📊 实时回写: 测试结果自动回写到表格,形成完整数据闭环
- 🎨 可视化报告: 利用Lark图表功能展示测试趋势
- 🔧 字段管理: 完整的字段CRUD操作,支持动态表格改造
- 📝 精简设计: 13个核心字段,简洁高效易维护
经过深度优化,框架采用精简优先的设计理念,将字段从31个精简至13个核心字段:
| 字段名 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 接口编号 | 自动编号 | 【系统生成】唯一标识符 | 1, 2, 3... |
| 接口名称 | 文本 | 【必填】功能描述 | 用户登录接口 |
| 接口路径 | 文本 | 【必填】API路径 | /api/auth/login |
| 请求方法 | 单选 | 【必填】HTTP方法 | POST |
| 请求头 | 多行文本 | 【可选】JSON格式 | {"Content-Type": "application/json"} |
| 请求体 | 多行文本 | 【可选】JSON格式 | {"username": "test", "password": "123456"} |
| 预期状态码 | 数字 | 【必填】期望状态码 | 200 |
| 响应状态码 | 文本 | 【系统填写】实际状态码 | 200 |
| 响应体 | 多行文本 | 【系统填写】响应数据 | {"code": "00000", "data": {...}} |
| 断言规则 | 多行文本 | 【可选】验证规则 | {"status_code": "== 200"} |
| 是否通过 | 单选 | 【系统填写】测试结果 | 通过/失败 |
| 字段名 | 类型 | 说明 |
|---|---|---|
| 是否启用 | 复选框 | 【用户控制】测试用例开关 |
| 备注 | 多行文本 | 【可选】补充说明信息 |
- Python: 3.8+
- 飞书账号: 具备多维表格访问权限
- 网络: 能访问
https://open.larksuite.com - 复制该表: https://d64xj2xqay.feishu.cn/base/UMlnbC7J4aP63AscoX9cdovCn7f?from=from_copylink
# 1. 克隆项目
git clone https://github.com/kai648846760/Lark-operation.git
cd Lark-operation
# 2. 安装依赖
pip install -r requirements.txt
# 3. 验证安装
python -m lark_tester.cli --version- 打开你的飞书多维表格
- 点击右上角 「插件」 → 「自定义插件」
- 选择 「获取授权码」
- 复制生成的
personal_token(以pt-开头)
编辑 config/production.yaml:
# Lark API 自动化测试框架 - 生产环境配置
# ================== Lark 配置 ==================
# 生产环境的飞书多维表格认证信息
personal_token: "pt-your-personal-token-here"
app_token: "your-app-token"
table_id: "your-table-id"
config_table_id: "your-config-table-id" # 配置表ID,可根据实际情况修改
domain: "https://base-api.larksuite.com"
# ================== API 测试配置 ==================
# 生产环境的API配置(从配置表读取)
api_base_url: "" # 从配置表动态读取,配置表字段: Host|是否开启|备注
request_timeout: 60 # 生产环境超时时间更长
max_retries: 5 # 生产环境重试次数更多
retry_delay: 2.0 # 重试延迟更长
request_delay: 0.5 # 生产环境请求间隔,避免对服务器压力过大
# ================== 日志配置 ==================
log_level: "INFO" # 生产环境使用INFO级别
enable_rich_logging: true
# ================== 其他配置 ==================
max_response_length: 5000 # 生产环境响应体长度限制更大
enable_assertions: true
fail_fast: false
# ================== 生产环境特殊配置 ==================
# 生产环境安全配置
validate_ssl: true
user_agent: "lark-api-tester/1.0.0 (production)"
# 性能配置
batch_size: 10 # 批量处理大小
concurrent_limit: 3 # 并发限制多维表格URL格式:
https://domain.larksuite.com/base/APP_TOKEN?table=TABLE_ID&view=VIEW_ID
APP_TOKEN: 位于/base/和?table=之间TABLE_ID: 位于?table=和&view=之间
# 执行所有启用的测试用例
python -m lark_tester.cli
# 执行特定编号的测试用例
python -m lark_tester.cli --test-id 1
# 启用详细日志
python -m lark_tester.cli --verbose
# 验证表格结构
python -m lark_tester.cli --validate在多维表格中创建测试用例:
接口名称: 用户登录接口
接口路径: /api/auth/login
请求方法: POST
请求头:
{
"Content-Type": "application/json",
"User-Agent": "ApiTest/1.0"
}
请求体:
{
"username": "test_user",
"password": "123456"
}
预期状态码: 200
断言规则:
{
"status_code": "== 200",
"response_json": {
"$.code": "== '00000'",
"$.data.token": "!= null"
}
}
是否启用: ☑️
备注: 基础登录功能测试
框架支持多种断言方式:
{
// HTTP状态码断言
"status_code": "== 200",
// 响应时间断言(毫秒)
"response_time": "< 1000",
// JSONPath响应内容断言
"response_json": {
"$.code": "== '00000'", // 精确匹配
"$.data.token": "!= null", // 非空验证
"$.data.user.id": "> 0", // 数值比较
"$.message": "contains '成功'", // 包含文本
"$.data.list": "length > 0" // 数组长度
}
}框架支持强大的变量引用功能:
// 环境变量引用
接口路径: ${env.base_url}/api/user/profile
// 运行时变量引用
请求头: {"Authorization": "Bearer ${runtime.access_token}"}
// 函数调用
请求体: {"request_id": "${func.uuid()}", "timestamp": ${func.timestamp()}}
支持的内置函数:
${func.uuid()}- 生成UUID${func.timestamp()}- 当前时间戳${func.random(1,100)}- 随机数${func.datetime()}- 当前日期时间
Lark-operation/
├── lark_tester/ # 核心框架
│ ├── core/ # 核心模块
│ │ ├── lark_client.py # Lark API客户端(基于原始SDK重构)
│ │ ├── test_executor.py # 测试执行引擎
│ │ ├── config_manager.py # 配置管理器
│ │ └── result_manager.py # 结果回写管理器
│ ├── utils/ # 工具模块
│ │ ├── logger.py # 日志工具
│ │ └── validator.py # 数据验证器
│ └── cli.py # 命令行接口
├── config/ # 配置文件
│ ├── production.yaml # 生产环境配置
│ └── development.yaml # 开发环境配置
├── examples/ # 示例代码
└── field_usage_guide.md # 字段使用指南
- 完全兼容: 保持与原始baseopensdk的认证逻辑一致
- 现代化实现: 使用requests库替代过时依赖
- 字段管理: 支持字段的创建、删除、更新、查询操作
- 类型安全: 严格的字段类型验证和转换
基于渐进式功能扩展原则:
- 简洁优先: 13个核心字段满足80%的测试需求
- 按需扩展: 复杂功能通过代码层面实现
- 用户友好: 新手可快速上手,专家有扩展空间
- 维护简单: 字段少、逻辑清晰、文档完整
基于原始baseopensdk的字段管理功能:
from lark_tester.core.lark_client import LarkClient
client = LarkClient(personal_token="pt-xxx", app_token="xxx")
# 创建字段
field = client.create_field(
table_id="tbl123",
field_name="新字段",
field_type=1, # 多行文本
description="字段描述"
)
# 列出所有字段
fields = client.list_fields("tbl123")
# 更新字段
client.update_field("tbl123", "fld456", field_name="更新后的字段名")
# 删除字段
client.delete_field("tbl123", "fld456")- 字段使用指南 - 详细的字段说明和最佳实践
# 克隆项目
git clone https://github.com/kai648846760/Lark-operation.git
cd Lark-operation
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 安装开发依赖
pip install -r requirements.txt
# 运行测试
python -m lark_tester.cli run-tests- PEP 8: Python代码风格标准
- 类型提示: 使用type hints提高代码可读性
- 文档字符串: 所有公共方法都要有docstring
- 单元测试: 核心功能必须有测试覆盖
错误: invalid access token (20005)
解决:
- 检查personal_token是否正确
- 确认token未过期
- 验证表格访问权限
错误: FieldNameNotFound
解决:
- 确保表格字段名与框架要求完全一致
- 检查字段是否已创建
- 使用validate命令验证表格结构
错误: Connection timeout
解决:
- 检查网络连接
- 确认API域名配置正确
- 尝试使用代理
# 启用详细日志
LARK_DEBUG=true python -m lark_tester.cli
# 验证配置
python -m lark_tester.cli --validate
# 测试连接
python -c "from lark_tester.core import LarkClient; print('连接正常')"- 请求频率: 建议不超过10次/秒
- 数据量: 单次最多200条记录
- 字段数量: 建议不超过50个字段
- Token有效期: 通常90天,需定期更新
- 批量操作: 使用批量API减少请求次数
- 缓存机制: 字段信息本地缓存
- 异步执行: 大量用例可考虑并发执行
- 分页处理: 大数据集自动分页加载
MIT License - 详见 LICENSE 文件
如果这个项目对您有帮助,请给一个 ⭐ Star 以表示支持!您的支持是我们持续改进的动力。