SuperAPI AI 工具集

frappe-unit-test-generator

测试与质量

查看项目

更新于 10-16 00:04

技能介绍

用途:该技能用于为 Frappe 应用生成可投入生产的单元测试,遵循 Frappe 的 unittest 框架(FrappeTestCase),并参考 ERPNext 与 Frappe 核心中已有的测试模式。触发场景包括:为 DocType 编写测试、测试控制器方法、测试 API 端点、测试业务逻辑或校验、搭建测试夹具与测试数据、测试权限或工作流。

主要能力:

  1. DocType 测试文件结构:生成基于 FrappeTestCase 的完整测试文件,包含 setUp、tearDown、测试方法及创建测试数据的辅助方法。
  2. 校验测试:使用 assertRaises 验证 ValidationError,例如未来日期、必填项为空、负数数量、重复行等。
  3. 计算测试:校验总额、折扣、税费等计算字段的结果。
  4. 工作流与状态测试:验证 docstatus 在插入、提交、取消、修订各阶段的变化,以及已提交文档不可再编辑等限制。
  5. 权限测试:通过 frappe.set_user 切换用户,验证读取、写入、创建权限及无权访问时抛出 PermissionError。
  6. API 方法测试:测试白名单方法返回值、鉴权要求、参数校验及过滤条件。
  7. 数据库查询测试:测试 frappe.get_all、frappe.db.get_value、frappe.db.exists 及 frappe.db.sql 原始查询。
  8. 子表测试:测试在子表中添加、删除、修改行后主表字段的联动变化。
  9. 测试夹具与数据:使用 setUpClass / tearDownClass 创建与清理类级别共享测试数据。
  10. 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 版本与本地测试环境配置影响,需在实际运行中确认。资料未提供官方安装步骤,故不作推测。