Test Runner

👤 alexwoo-awso 📦 v1.0.1 ⭐ 4.3 ⬇️ 725 下载
💻 开发编程 免费

📖 技能介绍


name: test-runner description: Write and run tests across languages and frameworks.


Test Runner

Core workflow

  1. Detect the language, package manager, and existing test framework before changing anything.

    7w4.net小葱技能站收录全网优质技能,值得收藏。

  2. Prefer the project's current test stack over introducing a new one.
  3. Run the smallest relevant test scope first, then widen coverage after the failure is understood.
  4. When fixing bugs, start with a failing test, make the smallest code change that passes, then refactor.
  5. After changes, run the narrow test again and then a broader suite if the local workflow supports it.

Framework selection

Use the existing framework when one is already configured. If the project has no test stack, prefer:

Language Unit tests Integration End-to-end
TypeScript / JavaScript Vitest Supertest Playwright
Python pytest pytest + httpx Playwright
Swift XCTest XCTest XCUITest

Command guide

Vitest

npm install -D vitest @testing-library/react @testing-library/jest-dom
npx vitest
npx vitest run
npx vitest --coverage

Use this baseline config when a project needs one:

import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    globals: true,
    environment: 'jsdom',
    setupFiles: './tests/setup.ts',
  },
})

Jest

npm install -D jest @types/jest ts-jest
npx jest
npx jest --watch
npx jest --coverage
npx jest path/to/test

pytest

uv pip install pytest pytest-cov pytest-asyncio httpx
pytest
pytest -v
pytest -x
pytest --cov=app
pytest tests/test_api.py -k "test_login"
pytest --tb=short

XCTest

swift test
swift test --filter MyTests
swift test --parallel

Playwright

npm install -D @playwright/test
npx playwright install
npx playwright test
npx playwright test --headed
npx playwright test --debug
npx playwright test --project=chromium
npx playwright show-report

Red-green-refactor

  1. Red: write a failing test for the behavior you need.
  2. Green: implement the smallest change that makes it pass.
  3. Refactor: clean up without changing behavior.

Test patterns

Arrange, act, assert

test('calculates total with tax', () => {
  const cart = new Cart([{ price: 100, qty: 2 }])

  const total = cart.totalWithTax(0.08)

  expect(total).toBe(216)
})

Async tests

test('fetches user data', async () => {
  const user = await getUser('123')
  expect(user.name).toBe('Colt')
})

Mocking with Vitest

import { vi } from 'vitest'

const mockFetch = vi.fn().mockResolvedValue({
  json: () => Promise.resolve({ id: 1, name: 'Test' }),
})

vi.stubGlobal('fetch', mockFetch)

API tests in Python

import pytest
from httpx import AsyncClient
from app.main import app


@pytest.mark.asyncio
async def test_get_users():
    async with AsyncClient(app=app, base_url="http://test") as client:
        response = await client.get("/users")

    assert response.status_code == 200
    assert isinstance(response.json(), list)

React component tests

import { fireEvent, render, screen } from '@testing-library/react'
import { Button } from './Button'

test('calls onClick when clicked', () => {
  const handleClick = vi.fn()
  render(<Button onClick={handleClick}>Click me</Button>)
  fireEvent.click(screen.getByText('Click me'))
  expect(handleClick).toHaveBeenCalledOnce()
})

Coverage commands

# JavaScript / TypeScript
npx vitest --coverage
npx jest --coverage

# Python
pytest --cov=app --cov-report=html
pytest --cov=app --cov-report=term
pytest --cov=app --cov-fail-under=80

What to test

Always test:

  • Public APIs and exported functions
  • Edge cases such as empty input, null, and boundary values
  • Error handling such as invalid input or network failures
  • Business logic such as calculations and state transitions

Usually skip:

  • Private implementation details
  • Framework internals
  • Trivial getters and setters
  • Third-party library behavior

🤖 AI 评测

这是一个质量较高的测试运行技能,内容全面、结构清晰、实用性强,能有效帮助开发者完成测试工作。主要优点是覆盖多种语言和框架、文档组织良好、示例可直接使用;不足之处是说明文档相对简单,缺少进阶内容如集成测试和常见问题解答。总体来说值得使用。

📊 多维度评分

适应性4.2
规范性4.3
有效性4.6
可靠性4.2
可信度4.3

📁 包含文件 (3 个)

📄 README.md 657 B
📄 SKILL.md 4 KB
📄 _meta.json 136 B