用途:该技能用于为 Frappe 应用生成可投入生产的单元测试,遵循 Frappe 的 unittest 框架(FrappeTestCase),并参考 ERPNext 与 Frappe 核心中已有的测试模式。触发场景包括:为 DocType 编写测试、测试控制器方法、测试 API 端点、测试业务逻辑或校验、搭建测试夹具与测试数据、测试权限或工作流。
主要能力:
- DocType 测试文件结构:生成基于 FrappeTestCase 的完整测试文件,包含 setUp、tearDown、测试方法及创建测试数据的辅助方法。
- 校验测试:使用 assertRaises 验证 ValidationError,例如未来日期、必填项为空、负数数量、重复行等。
- 计算测试:校验总额、折扣、税费等计算字段的结果。
- 工作流与状态测试:验证 docstatus 在插入、提交、取消、修订各阶段的变化,以及已提交文档不可再编辑等限制。
- 权限测试:通过 frappe.set_user 切换用户,验证读取、写入、创建权限及无权访问时抛出 PermissionError。
- API 方法测试:测试白名单方法返回值、鉴权要求、参数校验及过滤条件。
- 数据库查询测试:测试 frappe.get_all、frappe.db.get_value、frappe.db.exists 及 frappe.db.sql 原始查询。
- 子表测试:测试在子表中添加、删除、修改行后主表字段的联动变化。
- 测试夹具与数据:使用 setUpClass / tearDownClass 创建与清理类级别共享测试数据。
- mock 与 patch:用 unittest.mock 模拟 frappe.sendmail、requests.post 等外部依赖并断言调用。
使用方式:在需要为 Frappe 应用创建测试文件、编写测试用例或搭建测试数据时调用该技能。生成的测试通常放在对应 doctype 目录下的 test_<doctype>.py 文件中,类继承 FrappeTestCase,通过 frappe.get_doc 创建文档并调用 insert()、save()、submit()、cancel() 等方法,再用断言验证行为。
适用场景:Frappe / ERPNext 自定义应用的单元测试编写、业务逻辑回归验证、权限与工作流行为验证、API 接口测试。
限制:资料中未说明该技能的收费、价格、支持平台、安装命令或依赖版本;具体行为可能受 Frappe 版本与本地测试环境配置影响,需在实际运行中确认。资料未提供官方安装步骤,故不作推测。