SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-16 00:01

技能介绍

用途:为 Frappe 应用编写和运行测试,使用内置测试框架,覆盖单元测试、集成测试和 UI 测试。适用于为 DocType 控制器补测试、为工作流与 API 写集成测试、运行已有测试套件、调试测试失败,以及为 Frappe 应用搭建 CI 流水线。

主要能力:运行整个应用、指定模块、指定 DocType 或单个测试文件的测试;编写 DocType 测试(继承 FrappeTestCase,使用 setUp/tearDown);编写 API 测试并验证权限拒绝;测试角色权限;通过 fixtures 加载测试数据;使用 Cypress 运行 UI 测试。

使用方式:先执行 bench setup requirements --dev 安装开发依赖,并用 bench --site <site> migrate 确保站点就绪。运行测试示例:bench --site <site> run-tests --app my_app、bench --site <site> run-tests --module my_app.my_module.tests、bench --site <site> run-tests --doctype "My DocType"、bench --site <site> run-tests --app my_app -v。UI 测试:bench --site <site> run-ui-tests my_app,可加 --headless。测试文件需以 test_ 开头,DocType 测试放在对应目录下。

限制与注意事项:需提供应用名、站点名,可选模块/DocType 与测试环境。测试应相互隔离,在 tearDown 中清理数据或使用 frappe.db.rollback();外部服务需 mock,不可调用真实 API;用 frappe.set_user() 显式设置用户上下文;避免硬编码测试数据,使用唯一名称。常见问题包括未继承 FrappeTestCase、缺少数据库回滚导致测试污染、异步测试不稳定、只测实现而非行为、跳过权限测试。复杂 fixtures、Cypress 模式与 CI 配置可参考资料中提到的 references 文件。