AI + API 接口测试

用途

黑羽API测试助手 (hyta-api-test) 是一个 AI驱动的 API接口测试 工具,帮大家写测试用例,构建接口消息,自动执行用例,从而大大提高 API 接口测试效率。

相比传统方式(比如在 Postman 里逐条对照测试用例和接口文档填数据),扩展可以让 AI 自动生成调用参数,你只需要少量改动就能完成测试。

此外,测试用例和用例代码也可以自动生成,评审后即可直接运行。

安装

安装 扩展

需要电脑上已安装:

然后到扩展市场搜索 hyta-api-test,安装该扩展即可。

安装被测系统

为讲解 黑羽API测试助手 的使用,我们需要一个被测系统来测试。

这里使用 白月SMS系统 进行演示

请大家点击这里,按照说明下载、安装、运行 白月SMS系统

点击这里观看该系统的 API 接口文档,我们会在后续的操作中使用这个接口文档来演示。

大家可以点击这里,下载对应的markdown格式文档

使用前配置

初始化项目

新建一个API接口测试的项目文件夹,用 vscode 打开

我们需要把当前的项目 初始化为 hyta 项目,才能使用后续的功能。

Windows 系统按 F1,Mac系统 按 Command + Shift + P,打开命令面板,输入:hyta,选择:hyta - 初始化项目

这时候会在项目中产生一些目录和文件,它们都是有特定作用的,我们在后面使用的过程中会一一介绍。

LLM 服务 配置

首先,因为我们这个工具是AI驱动的,我们需要配置厂商提供的 大语言模型(LLM)服务,这样工具才能够智能完成需求接口文档分析,分解,生成测试代码、测试用例等功能。

这个配置文件就是刚刚产生的 hyta-apitest-llm-server.js 文件。

我们打开来看一下,这里面的配置信息。

module.exports =  {  
  
  baseURL        : 'https://api.deepseek.com',
  apiKey         : 'xxxxxx',
  model_thinking : 'deepseek-chat',
  model_fast     : 'deepseek-chat',
  
}

只要做过智能体开发的肯定非常熟悉这三种参数: baseURL,apiKey,model,

baseURL是厂商提供的API接口地址,model是我们要使用的模型,apiKey是我们访问这个服务的认证密钥。

这里的配置有两个模型,一个是思考模型,一个是快速模型。工具会在简单场景下使用快速模型,在复杂场景下使用思考模型,从而兼顾效率和效果。

  model_thinking : 'qwen3-max-2026-01-23', // 思考模型
  model_fast     : 'deepseek-v3.2',        // 快速模型

这个工具调用的 LLM 服务遵循 OpenAI 接口规范。现在主流大模型厂商大多提供兼容 OpenAI 的 API,所以各厂商的模型服务基本可以直接使用。

配置示例

下面是一些常用大模型服务商的配置示例,可以复制修改。

可以点击打开这一篇文章,参考各厂商模型服务的开通

如果你是一个新手,推荐就使用 DeepSeek 的模型服务,其网站的开通配置也最简单。


// *️⃣ DeepSeek 

    baseURL        : 'https://api.deepseek.com',
    apiKey         : 'xxxxxx',
    model_thinking : 'deepseek-chat',
    model_fast     : 'deepseek-chat',

	 									
// *️⃣ 阿里云百炼 

    baseURL        : 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    apiKey         : 'xxxxxx',
    model_thinking : 'qwen3-max-preview', //  kimi-k2.5 MiniMax-M2.1 deepseek-v3.2 qwen3.5-plus 
    model_fast     : 'deepseek-v3.2', //  qwen-flash


// *️⃣ 字节火山方舟

    baseURL        : 'https://ark.cn-beijing.volces.com/api/v3',  
    apiKey         : 'xxxxxx',  
    model_thinking : 'doubao-seed-2-0-lite-260215',  // deepseek-v3-2-251201 glm-4-7-251222 doubao-seed-1-8-251228 
    model_fast     : 'doubao-seed-2-0-mini-260215',   // deepseek-v3-2-251201 glm-4-7-251222 doubao-seed-1-6-flash


// *️⃣ 百度千帆
    
    baseURL        : 'https://qianfan.baidubce.com/v2',
    apiKey         : 'xxxxxx',
    model_thinking : 'DeepSeek-V3.2', // ERNIE-5.0-Thinking-Preview
    model_fast     : 'DeepSeek-V3.2', // ERNIE-4.5-Turbo-128K 


// *️⃣ 智谱

    baseURL        : 'https://open.bigmodel.cn/api/paas/v4',
    apiKey         : 'xxxxxx',
    model_thinking : 'GLM-4.7-FlashX', 
    model_fast     : 'GLM-4.7-Flash',


// *️⃣ OpenAI

    baseURL        : 'https://api.openai.com/v1',
    apiKey         : 'xxxxxx',
    model_thinking : 'gpt-5.2',
    model_fast     : 'gpt-5-mini',


// *️⃣ Google Gemini
    
    baseURL        : 'https://generativelanguage.googleapis.com/v1beta/openai',
    apiKey         : 'xxxxxx',
    model_thinking : 'gemini-3-flash-preview', 
    model_fast     : 'gemini-2.5-flash', 

配置 测试环境

AI 帮我们生成测试库和用例代码时,需要知道被测环境的一些信息,比如 API 服务地址端口、登录认证信息、管理员账号等。

这些信息可以在 hyta-apitest-runtime-cfg.js 中配置,生成代码时会一并传给 AI。

因此建议使用有意义的命名和适量注释,让 AI 更好理解这些信息的作用和场景,生成的代码就更容易直接运行。

示例配置如下:

  // *️⃣ 下面 可以设置一些常用的测试数据,运行测试代码时会把这些数据注入到运行环境中,方便直接使用
  
  base_url : "http://127.0.0.1", // 被测服务接口的基础URL

  // 管理员登录的用户名和密码
  admin_user : {
    username : "byhy",
    password : "88888888"
  },

其中最上面有个 代理配置,是为了方便大家使用抓包工具(如Fiddler等)进行调试分析的。

  // *️⃣ 代理设置,方便抓包工具(如Fiddler等)进行调试分析;
  // 如果需要代理,打开下方 proxy_url 注释 填写代理地址和端口即可;

  // proxy_url: "http://127.0.0.1:8888",  

如果打开注释,后续测试动作和测试用例生成的代码里就会自动使用这里设置的代理,这样你就可以在抓包工具里看到接口调用的请求和响应了。

原始 API 文档处理

格式转换

我们拿到的需求文档,可能是各种格式的,最常见的就是word文档了,还有pdf文档,甚至可能是一个网页链接。

AI 虽然也能处理多种格式的文档,但为了更好理解和处理信息,建议先转化为纯文本的 markdown 文档。

我们需要把这些文档转化成纯文本的md文档,来让AI更好地处理。

工具支持:文档 URL 地址、html 文件、word 文档、pdf 文档。

注意本功能需要电脑上安装 Python 3.10+, 因为本功能需要 python库 (markitdown) 来处理这些文档格式的转换。

只需要安装Python即可,如果这个库没有安装,不要紧,本工具会自动创建虚拟环境,自动安装。

文档 URL 转 md

直接右键点击目录 _original-docs,选择:转换网址为 Markdown,输入文档链接地址,工具会自动把文档内容抓取下来,转化成 md 格式的文本文件,放到 _original-docs 目录下了。

如果这个文档已经是比较小的,不需要后续的切分操作,也可以 右键点击 目录 api-docs进行相同操作。这样转化后的 md 文档就直接放到 api-docs 目录下了。

html、word、pdf 转 md

先把这些文件放到 _original-docs 目录下,然后右键点击这些文件,选择:转换为 Markdown,工具会自动把文档内容转化成 md 格式的文本文件,放到 相同 目录下。

内容整理

如果拿到的需求 API 文档比较粗糙,建议先整理一下,去掉不必要内容,只保留对 AI 有用的部分。

格式可以参考 https://www.byhy.net/py/django/doc_api_v1_2/ 的

切分文档,提取接口概要

我们拿到的需求文档,通常是一个很大的文档,里面有很多内容,接口文档只是其中的一部分。

建议把这个大文档分割为更小一些的文档。

为的是精简上下文,为后续AI处理准备更好的数据信息。


_original-docs 目录下,右键点击要切分的文档,选择:AI切分原始需求文档

API 文档操作

根据接口文档,生成 API 库

接下来要做的操作通常就是 创建 API 库

最常见的就是资源的增删改查(CRUD),各自封装为一个调用库函数。

比如,下面就定义了一个 listCustomers 的库函数,来封装列出客户的接口调用细节,供后续调用用的。

  /** 💲listCustomers
   * 调用列出客户API,获取客户列表
   * @param {number} pagesize - 每页记录数
   * @param {number} pagenum - 页码
   * @param {string} [keywords] - 过滤关键字,多个关键字用空格分隔
   * @returns {Promise<Object>} 返回包含ret, retlist, total的响应对象
   */
  listCustomers: async function(pagesize, pagenum, keywords) {
    // 构建查询参数对象
    const params = {
      action: 'list_customer',
      pagesize: pagesize,
      pagenum: pagenum
    };
    // 如果有关键字,添加到参数中
    if (keywords !== undefined) {
      params.keywords = keywords;
    }
    // 发送GET请求获取客户列表
    const response = await apiClient.send(
      `${cfg.base_url}/api/mgr/customers`,
      {
        method: 'GET',
        params: params
      }
    );
    // 解析响应体为JSON
    const result = await response.json();
    // 检查响应结果
    if (result.ret !== 0) {
      error(`列出客户失败: ${result.msg}`, false);
    } else {
      info(`成功列出客户,共 ${result.total} 条记录`);
    }
    return result;
  },

这一步不是 100% 必须,但强烈建议做,因为后续生成 API 调用代码、测试用例代码时会更简洁。

否则每个接口调用或测试用例代码里都会出现一大段重复逻辑,用来处理接口调用细节。


api-docs 目录下,右键点击 要创建 API 库的文档,弹出菜单,选择:AI生成 API库

工具会根据文档内容分析接口,并把接口调用细节封装到库函数里,写入 hyta-apitest-runtime-lib.js 运行时库,供后续使用。

也可以右键点击 api-docs 目录,选择 AI生成 API库(批量), 这样工具就会把所有文档都生成API库了。

根据接口文档,生成 测试动作

可以根据接口文档,生成测试动作。

测试动作最常见的就是资源的增删改查(CRUD),各自封装为一个调用动作。这个调用动作就是一段代码,构造参数发出API调用检查返回结果等。

比如

info("准备列出客户");

// 定义列出客户接口的URL
const listCustomerUrl = `${cfg.base_url}/api/mgr/customers`;

// 准备查询参数
const listParams = {
    action: 'list_customer',
    pagesize: 10, // 每页记录数,可根据需要修改
    pagenum: 1,   // 页码,可根据需要修改
    keywords: ''  // 过滤关键字,多个用空格分隔,可根据需要修改
};

// 发送列出客户请求
const response = await apiClient.send(
    listCustomerUrl,
    {
        method: 'GET',
        params: listParams
    }
);

// 检查响应状态
if (!response.ok) {
    error(`列出客户请求失败,状态码: ${response.status}`, true);
}

// 解析响应体
const responseBody = await response.json();

// 检查业务逻辑是否成功
if (responseBody.ret !== 0) {
    error(`列出客户失败: ${responseBody.msg || '未知错误'}`, true);
}

info(`列出客户成功,共 ${responseBody.total} 条记录`);

api-docs 目录下,右键点击 要生成 测试动作 的 文档,弹出菜单,选择:AI生成 测试动作。 工具就会根据文档内容,分析出有哪些接口,然后把接口调用的细节封装到一个调用动作里,放到 test-actions 目录下了。

动作文件名基于接口文档名称,前面加前缀 actions- 以示区分。

也可以右键点击 api-docs 目录,选择 AI生成 测试动作(批量), 这样工具就会把所有文档都生成测试动作了。


和上面 AI生成 API库 的区别是,生成 API库 是把接口调用封装到一个库函数里,主要是为了后面 测试用例代码调用的, 当然有时 测试动作 也会调用。

AI生成 测试动作 功能主要是为了直接手动进行接口测试用的。

动作代码里可能会直接调用 AI生成 API库 生成的库函数,这样更简洁,也更容易理解。


接口调用动作生成后,如果你已经有测试用例(比如 Excel 中现成的用例),基本就可以开始测试了。

这里说 基本,是因为这些调用动作往往还不太够。

比如不少用例需要构建复杂的测试环境:系统中要有多少用户、多少产品,每次都要一条条新增或删除,成本很高。

这个时候,就需要我们使用下面的功能,添加更多的 测试动作。

手工测试的时候,经常点开调用动作文档,点击里面的动作代码执行。

如果前面分隔开来的 API文档比较多的话,那对应的 动作文件 也会比较多。

如果你觉得频繁的选择动作文件比较麻烦,可以把它们合并到一个动作文件中

右键点击 test-actions 目录,选择:合并动作文件,工具会把所有动作文件内容合并到一个文件里。

测试动作操作

根据说明,生成 新测试动作

前面说过,根据文档自动生成的接口调用代码不太够用

比如系统有三种资源:客户、药品、订单。

根据 API 文档自动生成的测试动作,通常只会为删除每种资源各生成一个动作。

可能有很多测试用例的前置条件是清除掉系统中所有的数据,就是把这三种资源全部都删除掉。

这时可以手工写一段描述,比如:


## 删除所有数据

先删除订单,再删除客户和药品

然后选中这段文字,右键点击,弹出菜单中点击:❇️ 根据选中描述,生成测试动作 即可。

AI 会根据这个描述(加上配置文件和库文件中的内容)生成一段删除所有资源的代码。

生成的代码会自动拷贝到剪贴板中,你可以直接粘贴到动作文件里。

执行测试动作

测试动作的代码都可以直接执行。点击上方的 执行测试动作 提示链接(VS Code 术语 CodeLens)即可。

如果你已经有了测试用例了,根据用例里面的描述, 按需要选择执行这些测试动作就可以了。


另一个需要执行测试动作的场景是:后面的自动化测试代码可能需要额外调用这些动作来构建测试环境。

选中测试动作封装为库函数

这个功能主要是为了后面产生自动化测试用例的代码时候用的。

根据接口文档自动产生的库可能不太够用,

比如我们上面说的 删除所有资源 的代码,封装为测试动作了。

但是,测试动作是不能被用例代码直接调用的。 用例代码只能调用库。

所以,我们需要把它封装成一个库函数,叫做 clearAllData, 这样后面我们在产生自动化测试用例的时候,就可以直接调用这个函数来清除系统数据了。

方法是:选中前面测试动作对应的代码和描述,比如 删除所有数据,然后右键点击,在菜单中选择:选中部分封装为 一个库函数 即可。

AI 会根据这个选中的代码和描述(加上 配置文件中的内容),生成一段库代码插入到库文件里了, 供后续测试用例代码调用的。

测试用例操作

根据接口文档,生成 测试用例

api-docs 目录下,右键点击 要创建 API 库的文档,弹出菜单,选择:AI生成 测试用例

工具就会根据文档对接口的描述,分析出接口的测试要点,然后根据这些测试要点,和工具内置的写用例技巧,生成接口测试用例了。

测试用例放在 test-cases 目录下。用例文件名称是根据接口文档的名称来命名的,前面加上前缀 cases-, 以示区分。

也可以右键点击 api-docs 目录,选择 AI生成 测试用例(批量), 这样工具就会把所有文档都生成测试用例了。

为用例生成测试代码

前面生成的自动化用例,通常还需要评审一下。确认没问题后,就可以让 AI 生成自动化测试代码。

点击下图箭头指向的提示链接即可。


前面执行测试动作是手工测试用的,我们根据测试用例选择哪些动作并依次执行。

而生成的测试代码是全自动的测试。

这些代码会尽可能使用前面生成的库函数和测试动作来构建测试环境、执行测试操作,这样代码更简洁。

执行测试代码

测试代码生成好后,就可以直接运行。

点击代码上面的提示链接 执行代码 即可。

导出为 Excel 测试用例

有时候我们需要把这些测试用例导出成 Excel 格式的测试用例,供其他人使用。

右键点击测试用例文件,然后在弹出菜单中选择:导出为 Excel 即可。

工具会把选中的内容转化成 Excel 格式的测试用例,保存在 相同 目录下。

也可以右键点击 test-cases 目录,选择:导出为 Excel, 这样工具就会把所有测试用例都导出成 Excel 格式了。

七牛云服务API测试案例

我们在上面介绍了这个工具的功能和使用方法,下面我们来看看一个具体的使用案例。

我们以 七牛云的对象存储服务(Kodo)的 Bucket API接口 为例,来演示一下这个工具的使用。

Bucet 是用来存储对象的容器,类似于文件夹。我们可以通过 API 来创建、删除、以及对 Bucket 进行空间标签设置等操作。

大家可以先点击这里,查看 七牛云对象存储服务的 API接口文档,来了解一下这些接口的功能和使用方法。


这里就用2个接口:创建bucket,删除bucket,来演示如何使用 黑羽API测试助手 来生成测试用例和测试代码的。

我们先把 这2个接口文档的网址 转化成 markdown 格式的文档,放到 api-docs 目录下。

然后我们仔细阅读一下这2个接口的文档,可以发现,还需要一个生成管理凭证的接口,来生成调用这2个接口需要的认证信息。

我们先把这个接口的文档也转化成 markdown 格式的文档,放到 api-docs 目录下。

然后,使用 AI生成 API库 功能,来生成这3个接口的调用库函数。

然后,使用 AI生成 测试动作 功能,来生成这3个接口的测试动作,就可以用来测试这2个接口了.

也可以 使用 AI生成 测试用例 功能,来覆盖这2个接口的功能点.