npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

llm-test-generator

v1.0.0

Published

基于大语言模型的自动化测试生成框架

Readme

LLM Test Generator

LLM Test Generator 是一个基于大语言模型的自动化测试生成框架,支持将测试生成功能集成到各种开发环境中。

功能特点

  • 😊 支持多种编程语言:JavaScript, TypeScript, Python, Java, C#, Go, Rust, Ruby, PHP, Swift 等
  • 🧪 支持多种测试框架:Jest, Mocha, Pytest, JUnit, XUnit, TestNG 等
  • 📊 多种报告格式:JSON, JUnit XML, HTML, Markdown
  • 🔗 完全兼容 MCP 协议,方便集成到 Cursor 等 AI 编辑器
  • 🧠 支持多种大模型(DeepSeek、OpenAI、Gemini 等)生成高质量测试用例
  • 🔌 支持插件式架构,轻松扩展新的 LLM 服务提供商,无需修改核心代码

安装和配置

系统要求

  • Node.js 18.x 或更高版本
  • npm 或 yarn

安装步骤

  1. 克隆仓库并安装依赖:
git clone https://github.com/yourusername/llm-test-generator.git
cd llm-test-generator
npm install  # 或使用 yarn install
  1. 配置 MCP 服务:

有两种方式配置 API 密钥和模型参数:

方法一:配置文件(推荐)

编辑项目根目录下的 cursor-mcp-config.json 文件:

{
  "mcp.services": [
    {
      "name": "llm-test-generator",
      "description": "自动化测试生成服务",
      "endpoint": "http://localhost:3000/mcp/test-generator",
      "modelProvider": "deepseek",
      "modelProviders": {
        "deepseek": {
          "apiKey": "your_deepseek_api_key_here",
          "baseUrl": "https://api.deepseek.com",
          "model": "deepseek-coder",
          "temperature": 0.4,
          "maxTokens": 4000
        },
        "openai": {
          "apiKey": "your_openai_api_key_here",
          "baseUrl": "https://api.openai.com/v1",
          "model": "gpt-4-turbo",
          "temperature": 0.3,
          "maxTokens": 4000
        },
        "gemini": {
          "apiKey": "your_gemini_api_key_here",
          "baseUrl": "https://generativelanguage.googleapis.com",
          "model": "gemini-pro",
          "temperature": 0.2,
          "maxTokens": 2048
        }
      },
      "commands": [
        {
          "name": "generateTests",
          "title": "生成测试用例",
          "description": "根据当前文档内容生成测试用例"
        },
        {
          "name": "analyzeDocument",
          "title": "分析需求文档",
          "description": "分析当前文档中的需求"
        }
      ]
    }
  ]
}

要切换使用的模型,只需修改 modelProvider 字段的值为 deepseekopenaigemini

方法二:环境变量

创建 .env 文件并配置以下内容:

# 指定使用的模型提供商: deepseek, openai, gemini
LLM_PROVIDER=deepseek

# DeepSeek 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-coder

# OpenAI 配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4-turbo

# Gemini 配置
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_BASE_URL=https://generativelanguage.googleapis.com
GEMINI_MODEL=gemini-pro

# 服务器配置
PORT=3000

要切换使用的模型,只需修改 LLM_PROVIDER 环境变量的值。

注意:配置文件中的设置优先级高于环境变量。如果同时存在两种配置,将优先使用配置文件中的设置。

启动服务器

使用以下命令启动服务器:

npm start

开发模式(自动重启):

npm run dev

API 端点

健康检查

GET /health

获取支持的选项

GET /supported-options

从文件生成测试

POST /generate-from-file
{
  "filePath": "path/to/your/file.js",
  "outputDir": "./generated-tests",  // 可选,默认为 "./generated-tests"
  "language": "javascript",
  "framework": "jest",
  "reportFormat": "json"  // 可选,默认为 "json"
}

从代码内容生成测试

POST /generate-from-content
{
  "content": "// 您的代码内容",
  "outputDir": "./generated-tests",  // 可选,默认为 "./generated-tests"
  "language": "javascript",
  "framework": "jest",
  "reportFormat": "json"  // 可选,默认为 "json"
}

MCP 协议端点

POST /mcp/test-generator
{
  "action": "generate-tests",
  "params": {
    "filePath": "path/to/your/file.js",  // 文件路径,与 content 二选一
    "content": "// 您的代码内容",  // 代码内容,与 filePath 二选一
    "outputDir": "./generated-tests",
    "language": "javascript",
    "framework": "jest",
    "reportFormat": "json"
  }
}

与 Cursor 集成

在 Cursor 编辑器中,您可以通过以下步骤集成 AutoTest MCP Server:

  1. 在 Cursor 设置中找到自定义工具或 MCP 服务器配置
  2. 添加新服务器,并设置 URL 为 http://localhost:3000/mcp/test-generator
  3. 设置所需参数,包括语言、框架和报告格式
  4. 保存并开始使用

客户端代码示例

JavaScript/TypeScript

// ESM
import { AutomatedTestGenerator } from "llm-test-generator";

// CommonJS
const { AutomatedTestGenerator } = require("llm-test-generator");

// 方式1:使用特定模型初始化测试生成器
const generator1 = new AutomatedTestGenerator(
  "YOUR_API_KEY", // API密钥
  "https://api.yourllmprovider.com", // API基础URL
  "your-preferred-model" // 使用的模型
);

// 方式2:让系统自动选择合适的LLM服务
const generator2 = new AutomatedTestGenerator(
  "YOUR_API_KEY", // API密钥
  "https://api.deepseek.com" // API基础URL,系统会自动检测提供商
);

// 方式3:使用详细配置
const generator3 = new AutomatedTestGenerator({
  apiKey: "YOUR_API_KEY",
  baseURL: "https://api.openai.com/v1",
  model: "gpt-4-turbo",
  maxRetries: 3,
  retryDelay: 1000,
});

// 生成测试文件
async function generateTests() {
  try {
    // 从文件加载需求文档
    const { content, format } = await generator1.loadDocumentFromFile("./requirements.md");

    // 生成测试文件
    const results = await generator1.generateTestArtifacts(content, format, {
      outputDir: "./tests",
      language: "typescript",
      framework: "vitest",
      reportFormat: "markdown",
    });

    console.log("测试生成完成!");
    console.log(`生成了${results.testCases.length}个测试用例`);
  } catch (error) {
    console.error("生成测试时出错:", error);
  }
}

generateTests();

命令行使用

# 安装
npm install -g llm-test-generator

# 使用
llm-test generate -i requirements.md -o ./tests -l typescript -f vitest -r markdown -k YOUR_API_KEY -u https://api.yourllmprovider.com

插件式架构:添加自定义 LLM 服务

LLM Test Generator 使用插件式架构,允许您轻松添加自定义 LLM 服务,而无需修改框架核心代码。

创建自定义 LLM 服务

import { LLMService, ModelConfig, ModelOptions, BaseLLMService } from "llm-test-generator/models/llm-service";
import { LLMServiceProvider } from "llm-test-generator/models/model-registry";
import { ModelFactory } from "llm-test-generator/models/model-factory";

// 1. 创建自定义LLM服务实现
class CustomLLMService extends BaseLLMService {
  constructor(config: ModelConfig) {
    super(config);
    this.provider = "custom";
    this.model = config.model || "custom-model";
  }

  async generateResponse(prompt: string, options?: ModelOptions): Promise<string> {
    // 实现您的自定义API调用逻辑
    console.log(`使用自定义LLM服务,模型: ${this.model}`);

    // 这里是您自己的API调用逻辑
    const response = await fetch(this.config.baseURL!, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${this.config.apiKey}`,
      },
      body: JSON.stringify({
        model: this.model,
        prompt: prompt,
        temperature: options?.temperature || 0.7,
        max_tokens: options?.maxTokens || 2000,
      }),
    });

    const data = await response.json();
    return data.text || data.content || data.choices[0].text;
  }
}

// 2. 创建服务提供者
class CustomServiceProvider implements LLMServiceProvider {
  readonly name = "custom";

  canHandle(config: ModelConfig): boolean {
    // 判断是否能处理此配置
    if (config.baseURL?.includes("mycustomapi.com")) {
      return true;
    }

    if (config.model?.includes("custom-model")) {
      return true;
    }

    return false;
  }

  createService(config: ModelConfig): LLMService {
    return new CustomLLMService(config);
  }
}

// 3. 注册服务提供者
ModelFactory.registerServiceProvider(new CustomServiceProvider());

// 4. 使用您的自定义服务
const generator = new AutomatedTestGenerator("YOUR_CUSTOM_API_KEY", "https://api.mycustomapi.com", "custom-model");

优势

  • 灵活扩展:您可以轻松添加对新 LLM API 的支持,无需等待官方更新
  • 无侵入式:添加自定义模型不需要修改框架核心代码
  • 统一接口:所有 LLM 服务遵循相同的接口,提供一致的用户体验
  • 自动检测:系统会根据提供的 URL 和配置自动选择合适的服务实现
  • 多模型支持:可以同时注册多个服务提供者,根据需要选择不同的模型

配置大模型

有三种方式配置 API 密钥和模型参数:

方法一:代码中直接配置(推荐)

最灵活的方式是在代码中直接配置大模型,特别适合作为 npm 包安装使用时:

import { ModelFactory, AutomatedTestGenerator } from "llm-test-generator";

// 配置单个提供商
ModelFactory.configure("deepseek", {
  apiKey: "your_deepseek_api_key",
  baseURL: "https://api.deepseek.com",
  model: "deepseek-coder",
  temperature: 0.4, // 可选
  maxTokens: 4000, // 可选
});

// 设置为默认提供商
ModelFactory.setDefaultProvider("deepseek");

// 或者一次性配置多个提供商
ModelFactory.configureAll(
  {
    deepseek: {
      apiKey: "your_deepseek_api_key",
      baseURL: "https://api.deepseek.com",
      model: "deepseek-coder",
    },
    openai: {
      apiKey: "your_openai_api_key",
      baseURL: "https://api.openai.com/v1",
      model: "gpt-4-turbo",
    },
  },
  "openai"
); // 设置openai为默认提供商

// 使用默认配置创建生成器
const generator = new AutomatedTestGenerator();

// 或指定使用某个提供商
const anotherGenerator = new AutomatedTestGenerator({ provider: "deepseek" });

方法二:配置文件

编辑项目根目录下的 llm-config.json 文件:

{
  "defaultProvider": "deepseek",
  "providers": {
    "deepseek": {
      "apiKey": "your_deepseek_api_key_here",
      "baseURL": "https://api.deepseek.com",
      "model": "deepseek-coder",
      "temperature": 0.4,
      "maxTokens": 4000
    },
    "openai": {
      "apiKey": "your_openai_api_key_here",
      "baseURL": "https://api.openai.com/v1",
      "model": "gpt-4-turbo"
    },
    "gemini": {
      "apiKey": "your_gemini_api_key_here",
      "baseURL": "https://generativelanguage.googleapis.com",
      "model": "gemini-pro"
    }
  }
}

系统会自动查找以下位置的配置文件:

  • 当前工作目录: ./llm-config.json
  • 用户主目录: ~/.llm-test-generator/llm-config.json
  • 系统配置目录: /etc/llm-test-generator/llm-config.json (Linux/Mac) 或 %APPDATA%\llm-test-generator\llm-config.json (Windows)

也可以在代码中显式指定配置文件路径:

const generator = new AutomatedTestGenerator({
  configPath: "./path/to/your/custom-config.json",
});

方法三:环境变量

创建 .env 文件并配置以下内容:

# 指定使用的模型提供商: deepseek, openai, gemini
LLM_PROVIDER=deepseek

# DeepSeek 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-coder

# OpenAI 配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4-turbo

# Gemini 配置
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_BASE_URL=https://generativelanguage.googleapis.com
GEMINI_MODEL=gemini-pro

配置优先级

  1. 构造函数中传入的配置参数
  2. 代码中通过ModelFactory.configure()设置的配置
  3. 配置文件中的配置
  4. 环境变量中的配置
  5. 默认配置

许可证

MIT