SuperAPI AI 工具集

test-standards-enforcer

测试与质量

查看项目

更新于 10-16 04:26

技能介绍

test-standards-enforcer 是一个用于强制执行测试最佳实践的技能。根据资料,它使用阻断式校验(BLOCKING validation)来检查测试是否符合规范。

用途 该技能用于在编写或审查测试时强制实施测试最佳实践,并阻断不符合规范的测试。

主要能力(校验规则) 资料列出了以下阻断规则(BLOCKING Rules,exit 1):

  1. 测试位置:测试必须位于 tests/ 或 tests/ 目录,示例违规为 src/utils/helper.test.ts。
  2. AAA 模式:测试必须具有 Arrange/Act/Assert 结构,示例违规为没有清晰分区。
  3. 描述性名称:测试名称必须描述行为,示例违规为 test('test1')。
  4. 无共享状态:测试不得共享可变状态,示例违规为 let globalVar = [] 而没有重置。
  5. 覆盖率阈值:覆盖率必须 ≥ 80%,示例违规为 75% 覆盖率。

文件位置规则 允许(ALLOWED):

  • tests/unit/user.test.ts
  • tests/integration/api.test.ts
  • tests/components/Button.test.tsx
  • app/tests/test_users.py
  • tests/conftest.py

阻断(BLOCKED):

  • src/utils/helper.test.ts(测试位于 src/)
  • components/Button.test.tsx(测试位于测试目录之外)
  • app/routers/test_routes.py(测试与源码混合)

命名约定 TypeScript/JavaScript 良好示例包括 test('should return empty array when no items exist', ...)、test('throws ValidationError when email is invalid', ...)、it('renders loading spinner while fetching', ...)。被阻断的示例包括 test('test1', ...)、test('works', ...)、it('test', ...)。 Python 良好示例使用 snake_case 且具描述性,如 def test_should_return_user_when_id_exists()、def test_raises_not_found_when_user_missing()。被阻断的示例包括 camelCase 的 def testUser() 和不具描述性的 def test_1()。

AAA 模式(必需) 每个测试必须遵循 Arrange-Act-Assert。资料提供了 TypeScript 示例(calculateDiscount 的测试,包含 Arrange、Act、Assert 注释)与 Python 示例(TestCalculateDiscount 类)。

测试隔离(必需) 测试不得共享可变状态。资料给出被阻断示例(模块级 let items = [] 导致第二个测试失败)与良好示例(在 beforeEach 中重置 items)。

覆盖率要求 资料中的表格为:总体(Overall)最低 80%、目标 90%;业务逻辑(Business Logic)最低 90%、目标 100%;关键路径(Critical Paths)最低 95%、目标 100%;新代码(New Code)最低 100%、目标 100%。 运行覆盖率命令:TypeScript(Vitest/Jest)为 npm test -- --coverage 或 npx vitest --coverage;Python(pytest)为 pytest --cov=app --cov-report=json。

参数化测试 资料建议对多个相似用例使用参数化测试,并给出 TypeScript(test.each)与 Python(@pytest.mark.parametrize)示例。

Fixture 最佳实践(Python) 资料提供函数作用域(默认,每个测试全新)、模块作用域(文件内共享)、会话作用域(所有测试共享)的 pytest fixture 示例。

常见违规 资料列出四类常见违规及阻断信息:测试位置错误、缺少 AAA 结构、共享可变状态、覆盖率低于阈值(如 Coverage 75.2% is below threshold 80%),并给出所需操作:为未覆盖代码添加测试、运行 npm test -- --coverage、确保覆盖率不低于 80%。

相关技能 资料列出 integration-testing(组件交互测试)、e2e-testing(Playwright 端到端)、msw-mocking(网络 mocking)、test-data-management(fixtures 与 factories)。

适用场景 适用于编写或审查测试时,强制测试结构、命名、隔离与覆盖率标准,并阻断不符合规范的测试。

限制 资料未提供安装方式、平台支持范围、价格或收费信息,暂未提供。