Test Runner

Polar Sponsor
爱发电 赞助
.NET 9.0

使用推荐框架编写、运行和管理 TypeScript、Python 和 Swift 的单元、集成及 E2E 测试。

测试运行器 : 写入并运行跨语言和框架的测试. : 框架选择. 语言

功能概述

测试运行器 : 写入并运行跨语言和框架的测试. : 框架选择. 语言是一项面向实际任务的技能,主要用于单元测试. 集成.;E2E. 端口脚本/JS.;

核心要点

  • Vites(首选), Jest.;
  • Supertest.;
  • Playwright.;

使用与执行

Python.pytest.pytest +。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

test-runner

跨语言与框架编写并运行测试。

框架选型

语言 单元测试 集成测试 端到端(E2E)测试
TypeScript/JS Vitest(推荐)、Jest Supertest Playwright
Python pytest pytest + httpx Playwright
Swift XCTest XCTest XCUITest

按框架快速上手

Vitest(TypeScript / JavaScript)

npm install -D vitest @testing-library/react @testing-library/jest-dom
// vitest.config.ts
import { defineConfig } from 'vitest/config'
export default defineConfig({
  test: {
    globals: true,
    environment: 'jsdom',
    setupFiles: './tests/setup.ts',
  },
})
npx vitest              # 监听模式(Watch mode)
npx vitest run          # 单次执行(Single run)
npx vitest --coverage   # 启用覆盖率统计

Jest

npm install -D jest @types/jest ts-jest
npx jest                # 运行全部测试
npx jest --watch        # 监听模式(Watch mode)
npx jest --coverage     # 启用覆盖率统计
npx jest path/to/test   # 运行指定文件

pytest(Python)

uv pip install pytest pytest-cov pytest-asyncio httpx
pytest                          # 运行全部测试
pytest -v                       # 详细输出(Verbose)
pytest -x                       # 首次失败即停止(Stop on first failure)
pytest --cov=app                # 启用覆盖率统计(覆盖 app 模块)
pytest tests/test_api.py -k "test_login"  # 运行匹配名称的特定测试
pytest --tb=short               # 简化堆栈跟踪(Short tracebacks)

XCTest(Swift)

swift test                      # 运行全部测试
swift test --filter MyTests     # 运行指定测试套件
swift test --parallel           # 并行执行

Playwright(E2E)

npm install -D @playwright/test
npx playwright install
npx playwright test                    # 运行全部测试
npx playwright test --headed           # 显示浏览器界面(With browser visible)
npx playwright test --debug            # 调试模式(Debug mode)
npx playwright test --project=chromium # 指定浏览器(如 Chromium)
npx playwright show-report             # 查看 HTML 测试报告

TDD 工作流

  1. 红(Red) — 编写一个描述预期行为但当前失败的测试。
  2. 绿(Green) — 编写最少必要代码,使该测试通过。
  3. 重构(Refactor) — 在确保所有测试仍能通过的前提下优化代码结构。
┌─────────┐     ┌─────────┐     ┌──────────┐
│  编写    │────▶│  编写    │────▶│  重构    │──┐
│  测试    │     │  代码    │     │  代码    │  │
│ (红)   │     │ (绿)   │     │          │  │
└─────────┘     └─────────┘     └──────────┘  │
     ▲                                          │
     └──────────────────────────────────────────┘

常用测试模式

Arrange-Act-Assert(准备-执行-断言)

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

  // Act(执行)
  const total = cart.totalWithTax(0.08);

  // Assert(断言)
  expect(total).toBe(216);
});

异步代码测试

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

Mock(模拟)

import { vi } from 'vitest';

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

API 接口测试(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 组件测试

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

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

覆盖率命令

# JavaScript/TypeScript
npx vitest --coverage          # Vitest(默认使用 v8 或 istanbul)
npx jest --coverage            # Jest

# Python
pytest --cov=app --cov-report=html    # 生成 HTML 报告
pytest --cov=app --cov-report=term    # 终端输出覆盖率
pytest --cov=app --cov-fail-under=80  # 覆盖率低于 80% 则构建失败

# 查看 HTML 覆盖率报告
open coverage/index.html       # macOS(Vitest/Jest)
open htmlcov/index.html        # Python(pytest-cov)

应当测试的内容

务必覆盖:

  • 公共 API / 导出函数
  • 边界场景:空输入、null 值、临界值
  • 错误处理:非法输入、网络异常
  • 业务逻辑:数值计算、状态转换

无需测试:

  • 私有实现细节
  • 框架内部机制(如 React 渲染、Express 路由)
  • 简单的 getter/setter 方法
  • 第三方库自身行为

相关专题

更多
AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

0

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

0

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

0

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

0

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

0

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

0

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

0

22

GDB C++程序怎么调试
GDB C++程序怎么调试

本专题围绕GDB调试C++程序的实际过程,详细说明程序编译、调试器启动、命令行参数传入、断点命中和程序继续运行等步骤,并介绍条件断点、临时断点和观察点的设置方法,方便开发者跟踪复杂代码的执行状态。

2026.09.11

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133万人学习