【软件测试】性能测试工具 JMeter

作者:清风~徐~来日期:2025/10/16

性能测试工具 JMeter

  • 一. JMeter 下载与环境配置
  • 二. JMeter 介绍
    • 1. JMeter 基本使用
    • 2. JMeter 元件作用域和执行顺序
    • 3. JMeter 重点组件
      • (1). 线程组
        • (2). HTTP 请求
        • (3). 查看结果树
        • (4). HTTP 请求默认值
        • (5). HTTP 信息头管理器
        • (6). JSON 提取器
        • (7). 用户定义的变量
        • (8). JSON 断言
        • (9). 同步定时器
        • (10). 事务控制器
        • (11). CSV 数据文件设置
        • (12). HTTP Cookie 管理器
    • 4. Jmeter 插件
      • (1). Stepping Thread Group
        • (2). Response Times Over Time
        • (3). Transactions per Second
  • 三. 接口性能测试报告
  • 四. 性能分析
    • 1. 响应时间
    • 2. 错误率(可靠性)
    • 3. 吞吐量

一. JMeter 下载与环境配置

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做性能测试。

在这里插入图片描述

JDK 下载:https://www.oracle.com/java/technologies/downloads/#jdk25-windows
在这里插入图片描述
在这里插入图片描述

JMeter 下载:https://jmeter.apache.org/download%5Fjmeter.cgi

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

修改字体为中文:

在这里插入图片描述

在这里插入图片描述

添加环境变量:

在这里插入图片描述

二. JMeter 介绍

1. JMeter 基本使用

启动 JMeter:

在这里插入图片描述

在这里插入图片描述

在 “测试计划” 下添加 “线程组”:

在这里插入图片描述

使用 Postman 发送登录博客系统请求:

在这里插入图片描述
在这里插入图片描述

在 “线程组” 下添加 “HTTP” 取样器:

在这里插入图片描述

填写 “HTTP请求” 的相关请求数据:

在这里插入图片描述

在 “线程组” 下添加 “查看结果树” 监听器:

在这里插入图片描述

点击 “启动” 按钮运行,查看接口测试结果:

在这里插入图片描述

2. JMeter 元件作用域和执行顺序

在 JMeter 中,元件的作用域和执行顺序是非常重要的概念。

  • 作用域:JMeter 元件的作用域主要由测试计划的树形结构中的元件父子关系来确定。
  • 执行顺序:取样器元件内组件不依赖其他元件就可执行,因此取样器不存在作用问题,元件作用域只对它的子节点有作用,其他作用域默认根据测试计划中树形结构来定。

3. JMeter 重点组件

(1). 线程组

控制 JMeter 将用于执行测试的线程数,也可以把一个线程理解为一个测试用户。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 线程数:一个线程即一个测试用户,设置发送的请求次数。
  • Ramp-up时间 (秒):设置性能测试运行时间,单位为秒。
  • 循环次数:
    • 配置指定次数:控制脚本循环执行的次数。
    • 配置循环永远。
      * 需要调度器配置使用。
      * 运行时间:脚本执行时间。
      * 延迟启动时间:脚本等待指定时间才能运行。

(2). HTTP 请求

配置信息发送 HTTP 请求,以下是博客登录请求:

在这里插入图片描述

在这里插入图片描述

添加必需的配置:

  • http 协议。
  • http 主机名/IP
  • 端口。
    • http 协议端口号80
    • https端口号443
  • 请求方法。
  • 路径 (目录+参数)
  • 内容编码 (默认的ISO国际标准,但对中文支持不友好,可以使用utf-8)
  • 参数
    • 参数可以拼在路径里,也可以卸载参数中。
    • POST参数要放到消息体数据中{wd:test}

(3). 查看结果树

发送 HTTP 的具体结果,包括请求和响应,以下是博客登录请求的具体结果:

在这里插入图片描述

在这里插入图片描述

  • 取样器结果:统计请求相关的信息。
    • Thread Name:线程组名称Sample time:发送请求时间。
    • load time:响应时间。
    • Response code:接口响应状态码。
  • 请求:HTTP请求的请求头和请求体的详细信息。
  • 响应:HTTP响应的响应头和响应体的详细信息。

(4). HTTP 请求默认值

博客中涉及到的接口协议、IP、端口号全都一样,可以单独抽取出来存放在默认值中,其他接口就可以省略不写协议、IP、端口号,如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(5). HTTP 信息头管理器

配置获取博客列表页 HTTP 请求:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

由于不知获取博客列表页的用户是谁,需要在请求头中添加用户的登录凭证如下:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题1:登录接口不需要用户登录凭证。

在这里插入图片描述

将 HTTP 信息头管理器移到 “获取博客列表页请求” 下面:

在这里插入图片描述

在这里插入图片描述

问题2:用户每一次登录都会产生的登录凭证,而写死的登录凭证存在过期,需要手动修改。

(6). JSON 提取器

接口响应成功,通过提取返回值对应字段,可用于其他接口的参数配置。

在这里插入图片描述

JSON 操作符参考:

在这里插入图片描述
参考文档:https://github.com/json-path/JsonPath

提取登录接口响应数据中的登录凭证,作为其他接口的登录凭证

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

提取登录凭证的键可能存在名称冲突

在这里插入图片描述

配置获取用户信息 HTTP 请求:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结果:获取博客列表页中的 token 是登录接口返回值中的 data 字段,而获取用户信息中的 token 是获取博客列表页接口返回值中的 data 字段,发生了覆盖。

在这里插入图片描述

提取获取博客列表页接口响应数据中的博客 id,作为博客详情页接口的参数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

获取不存在的博客 id,接口设计的是请求成功,由于不存在该博客,所以内部无法显示博客信息:

在这里插入图片描述

在这里插入图片描述

解决办法:将博客 id 提取出来,作为请求参数。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(7). 用户定义的变量

有时我们只想要在固定的场景里使用参数化,改动后不希望影响到其他的脚本:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 使用:在HTTP请求的取样器中引入定义的变量,${参数名}
  • 适用场景:变量需要在多个脚本中使用,方便统一管理和修改。

添加博客接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

JMeter 和 Postman 中参数的格式不同,导致 JMeter 请求失败,正确格式应该是 Postman 中的 JSON 格式:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(8). JSON 断言

接口发送请求成功,响应码为200并不能完全代表接口请求成功,我们更多需要关注接口响应数据是否符合预期。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 若不选 Additionally assert value,表示添加断言值,则可用来判断字段是否存在。
  • 选择 Additionally assert value,则必须添加 Expected Value 期望的断言值。
  • 若不选 Match as regular expression 正则匹配,则 Expected Value 必须填写完整,少一个字符都会导致断言失败。
  • 若选择 Match as regular expression 正则匹配,则 Expected Value 可以仅写上部分关键词即可断言成功。

(9). 同步定时器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

JMeter 同步定时器的作用主要在于模拟多用户并发访问的场景,确保多个线程能够同时执行某个操作,以达到真正的并发效果。

当多个线程同时启动时,它们可能会在不同的时间间隔内执行,这样就无法达到真正的并发效果。同步定时器的作用就是将这些线程的执行时间同步,使它们在同一时间点执行。它可以在多个线程之间制造一定的延迟,直到同时到达指定时间点,再同时执行后续的操作。

此外,同步定时器可以理解为集合点,当线程数量达到指定值后,再一起释放,可以瞬间产生很大的压里。这样,可以更好地模拟真实的用户并发访问场景,提高测试的准确性和可靠性。

在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能里,可以使用同步定时器来设置集合点。不过,虽然通过加入集合点可以约束请求同时发送,但不能确保请求同时到达服务器,所以只能说是较真实模拟并发。

现实生活中,红绿灯就相当于意个集合点,有人先到达,有人后达到,但必须等到绿灯后所有人才能开始过人行道。

添加同步定时器:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(10). 事务控制器

在这里插入图片描述
在这里插入图片描述

添加聚合报告,查看接口执行的各种时间,如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JMeter 事务控制器的作用主要用于测试执行嵌套测试元素所花费的总时间。这相当于模拟用户进行一系列操作的测试。

在进行页面性能测试或API性能测试时,事务控制器是一个非常重要的工具。它可以帮助测试人员更准确地评估系统性能,尤其是在涉及多个接口或操作的复杂场景中。例如,在订单提交的过程中,可能需要调用多个接口,并且某些接口可能依赖于前一个接口的结果。在这种情况下,使用事务控制器可以将这些接口统一视为一个事务进行性能测试,从而得到更接近真实场景的性能测试结果。

若不添加事务控制器,则一个接口即一个事务。添加了事务控制器后,可以将多个接口统一放到一个事务控制器下作为一个事务。

(11). CSV 数据文件设置

以登陆接口为例,当我们执行登陆接口的性能测试时,手动配置了用户名和密码为固定的 username 和 password,然而实际使用中不可能只有一个用户登陆,为了模拟更真实的登录环境,我们需要提供更多用户的 username 和 password 来实现登录操作:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 文件名:填写 csv 文件的路径,建议使用绝对路径。
  • 文件编码:UTF-8
  • 变量名称:从 csv 数据文件中读起的数据需要保存到的变量名,有多个变量时用逗号分隔。
  • 是否忽略首行:是否从 csv 数据文件第一行开始读取。
  • 分隔符:要求与 csv 数据文件中多列的分隔符一致。
  • 遇到文件结束符再次循环:若选择为 True 当数据不够的时候会从头取。若选择False,则需要勾选下面的配置,遇到文件结束符停止线程,这里如果不勾选,请求将会报错。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(12). HTTP Cookie 管理器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加 HTTP Cookie 管理器:“登录-0” 成功登录后,服务器返回的响应头中存在 Set-Cookie 字段,存放 Cookie 信息给客户端,而 “登录-1” 就会自动在请求头中添加 Cookie 字段。当然在登录请求中添加 Cookie 没有意义,但是 HTTP Cookie 管理器可以做到让其他接口的请求头中携带 Cookie 信息,才是关键!

在这里插入图片描述

HTTP Cookie 管理器像 Web 浏览器一样存储和发送 Cookie,如果 HTTP 请求并且响应包含 Cookie,则 Cookie 管理器会自动存储该 Cookie,并将其用于将来对该特定网站的所有请求。每个 JMeter 线程都有自己的 “Cookie 存储区”。因此,正在测试使用 Cookie 存储会话信息的网站,则每个 JMeter 线程都将拥有自己的会话。此类 Cookie 不会显示在 Cookie 管理器显示屏上,可以使用 “查看结果树监听器” 查看。

缓存配置可选择 standard(标准) 或 compatibility(兼容的),当然也可以手工添加一些 Cookie,添加了 HTTP Cookie 管理器后,会自动存储并发送 Cookie

4. Jmeter 插件

下载 Jmeter 插件功能:https://jmeter-plugins.org/install/Install/

在这里插入图片描述

将下载好的插件放到 apache-jmeter-5.6.3 下 lib/ext 文件夹下:

在这里插入图片描述

此时 jmeter 界面右上角将会展示一个小蝴蝶形状的工具,该工具即 jmeter 插件功能,点击该功能可以下载 jmeter 中支持的各种插件:

在这里插入图片描述

在真实企业压测场景中,我们通常为一点一点的逐步增加线程数,因此需要安装新的插件来支持线程数的配置。通过插件管理工具下载其他插件:

在插件中下载其他监听器插件:

在这里插入图片描述

在插件中下载线程组插件:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点击 Apply Changes and Restart JMeter 等待下载完成并重启 JMeter,下载完成后再线程和监听器中可以看到新增的元件:

在这里插入图片描述

(1). Stepping Thread Group

梯度压测线程组:

在这里插入图片描述
在这里插入图片描述

  • This group will start:启动多少个线程,同线程组中的线程数。
  • First, wait for:等待多少秒才开始压测,一般默认为0
  • Then start:一开始有多少个线程数,一般默认为0
  • Next, add:下一次增加多少个线程数。
    • threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的的持续时间。
    • using ramp-up:启动线程的时间,若设置为5秒,表示每次启动线程都持续5秒。
    • 上图含义:每隔 30 秒启动 10 个线程,这 10 个线程必须在 5 秒内准备完成
  • thenhold loadfor:线程全部启动完之后持续运行多长时间。
    • 上图含义:线程全部启动完之后持续运行 60 秒
  • finally,stop/threads every:多长时间释放多少个线程。
    • 上图含义:每隔 1 秒结束 5 个线程

最终的图形,很好的展示了上面的数据:

在这里插入图片描述

(2). Response Times Over Time

Response Times Over Time 主要用于监听整个事务运行期间的响应时间。在测试过程中,它可以帮助测试人员观察并分析响应时间的实时平均值以及整体响应时间的走向。通过这一监听器,测试人员能够更直观地了解系统在不同时间点的响应性能,从而发现可能存在的性能问题或瓶颈。

在这里插入图片描述

Response Times Over Time 的图形展示中,横坐标通常代表运行时间,而纵坐标则代表响应时间 (单位是毫秒)。测试人员可以根据图形中的趋势线来判断响应时间的稳定性以及是否存在大的波动。例如,如果响应时间在某个时间点突然增加,这可能意味着系统在该时间点遇到了性能问题。

(3). Transactions per Second

JMeter 中的 Transactions per Second (TPS) 监听器是一个用于分析系统吞吐量的重要工具。TPS 即每秒事务数,表示一个客户机向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在同一时间内处理业务的最大能力。TPS 值越高,说明系统的处理能力越强。

在这里插入图片描述

在使用 TPS 监听器时,横坐标通常代表运行时间,而纵坐标则代表 TPS 值。通过监听器展示的图表,可以清晰地看到 TPS 值随时间的变化情况。在图表中,红色通常表示通过的 TPS,而绿色可能表示失败的 TPS。这有助于我们快速识别系统性能的变化和瓶颈。

使用如下数据,进行接口测试:

在这里插入图片描述

活跃线程数如下:
在这里插入图片描述

响应时间如下:
在这里插入图片描述

每秒事物数如下:
在这里插入图片描述

聚合报告如下:
在这里插入图片描述

三. 接口性能测试报告

JMeter 测试报告是一个全面而详细的文档,它提供了关于测试执行结果的详细信息,帮助用户全面评估系统的性能并进行性能优化。生成性能测试报告的命令:

Jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录:

  • -n:无图形化运行。
  • -t:被运行的脚本。
  • -l:将运行信息写入日志文件,后缀为 jtl 的日志文件。
  • -e:生成测试报告。
  • -o:指定报告输出目录。

注意:日志文件和目录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误!

在这里插入图片描述

性能测试报告生成成功后,在文件夹下将出现以下内容:

在这里插入图片描述
在这里插入图片描述

双击 index.html 文件,界面展示如下:

在这里插入图片描述

四. 性能分析

通过三大指标来分析性能问题。

1. 响应时间

如果响应时间超过了要求,代表系统到了瓶颈。

注意事项:分析在多少线程的情况下发生了超标响应时间变化的原因:

  • 系统不稳定,有时快有时慢。
  • 随着并发压力变大而慢慢变慢,响应时间变高。

2. 错误率(可靠性)

高并发场景下,系统是否能够正常处理业务。要求:99.99%可靠,99.9999%

错误率高的原因:

  • 接口请求错误。
  • 服务器无法继续处理,达到了瓶颈 (代码写的不好,内存泄漏、硬件资源等)
  • 后端系统限流 (系统里配置了不能超过多少并发)、熔断、降级

什么是熔断、降级?

  • 熔断:防止系统因某个服务的故障而整体崩溃。当电商平台上用户支付时,收银台发现某个支付渠道,如微信支付失败率突增,超时严重,那么就可以临时把这个支付方式熔断掉。
  • 降级:主动关闭一些非核心功能,以确保核心功能的正常运行。某次腾讯视频挂了的时候,用户名称默认显示腾讯用户,这也是一种降级方式,用兜底名称做展示。

3. 吞吐量

吞吐量越大,性能越好,吞吐量相对稳定或者变低,可能系统达到了性能瓶颈。

吞吐量变化规律:

  • 波动很大:代表系统性能不稳定。
  • 慢慢变高,再趋于稳定:和并发量强相关。如果并发量小于吞吐量,慢慢增大并发量,吞吐量也会随之增加。
  • 慢慢变低,并发量也减少了:要么说明性能测试要结束了,并发减少;也可能是系统变的卡顿,从而导致响应时间变慢,导致单个线程发起的并发量变少。

【软件测试】性能测试工具 JMeter》 是转载文章,点击查看原文


相关推荐


Python 的内置函数 bytes
IMPYLH2025/10/14

Python 内建函数列表 > Python 的内置函数 bytes class bytes(x=b''): ''' 创建 bytes :param x: 要转换的变量 :return: x 转换为 bytes 后的值 ''' Python 的内置函数 bytes 用于创建不可变的字节序列对象。它是 Python 中处理二进制数据的基本类型之一,与 str 类型类似但专门用于表示字节数据而非文本。 bytes 函数有三种主要创建方式: 通过指定


电视盒子助手开心电视助手 v8.0 删除电视内置软件 电视远程控制ADB去除电视广告
2501_929382652025/10/13

电视盒子助手开心电视助手 v8.0 删除电视内置软件 电视远程控制ADB去除电视广告                                       “开心电视助手V8.0最新版”是一款功能强大的安卓电视/电视盒子管理软件,通常运行在Windows电脑上。它通过局域网(Wi-Fi)或USB数据线连接到您的电视或盒子,实现一系列高级管理、调试和控制功能。 它尤其受到开发者、电视发烧友和喜欢折腾智能电视/盒子的用户的欢迎。支持安卓设备的电视 盒子 安卓手机 安卓所有设备 下载地


C# 中 Excel 工作表打印前页面边距的设置方法
缺点内向2025/10/12

C# 中 Excel 工作表打印前页面边距的设置方法 在日常的业务报表生成与文档打印场景中,Excel无疑是不可或缺的工具。然而,当我们需要批量打印或自动化生成Excel报表时,一个常见且令人头疼的问题浮现:如何确保所有打印输出的页面边距一致,避免手动逐一调整的繁琐与低效呢? 本文将探讨在C#环境中,如何通过编程方式精确控制Excel工作表的打印页面边距。在这里,我们将借助第三方库——Spire.XLS for .NET,为您提供一个高效、自动化且易于实现的解决方案,让您的Excel打印设置工作


FunASR 前端语音识别代码解析
Cosolar2025/10/10

这是基于Web技术的FunASR( 阿里巴巴达摩院 开源语音识别项目) 前端实现方案,支持麦克风实时录音识别与本地音频文件上传识别两大核心场景。整体功能围绕WebSocket通信、音频数据处理、语音识别结果解析三大关键环节展开,以下从代码结构、核心模块及关键逻辑三方面进行详细剖析。 代码:gitee.com/towao/FunAS… 一、代码整体结构 代码采用原生JavaScript编写,无框架依赖,整体架构清晰,主要划分为初始化配置、UI交互 控制 、音频 数据 处理、WebSocket通信、


Python私教FastAPI+React构建Web应用03 FARM技术栈介绍
Python私教2025/10/9

写在前面 作者:Python私教-张老师 时间:2025年10月07日 出处:电子书《Build Web Applications with FastAPI, React, and MongoDB》 翻译:英文是手抄的,可能会有错误,大家看到了请谅解一下。中文是使用有道词典翻译的。 改进:其中有些地方为了适配国内的阅读习惯以及录播课程,做了一些优化处理,可能会和原书不一样的地方。 简介:本篇文章主要介绍FARM技术栈,分别讲解FastAPI,React和MongoDB的优势以及组合后


“成章”写作助手开源:中秋赏不成月,那就开源一个 AI 实战项目吧
飞哥数智谈2025/10/7

前一阵的实战系列分享中,我们一块实现了一个 AI 写作助手 —— 成章。 当时就打算开源出来,方便感兴趣的同学学习、二开,但一直被各种事情打断,拖到了现在。 今天,赶上中秋节,但阴天没法赏月,索性整理一下先发布出来,需要的自取哈! 简介 “成章”写作助手是一个专为写作者设计的现代化写作平台,实现了文章编写、AI 辅助写作、图片上传等功能,旨在提供高效、便捷的写作体验。 前端开源地址:gitee.com/FlyFive/che… 后端开源地址:gitee.com/FlyFive/che… 功能


草梅 Auth 1.9.0 发布验证码组件 | 2025 年第 40 周草梅周报
草梅友仁2025/10/6

本文在 草梅友仁的博客 发布和更新,并在多个平台同步发布。如有更新,以博客上的版本为准。您也可以通过文末的 原文链接 查看最新版本。 前言 欢迎来到草梅周报!这是一个由草梅友仁基于 AI 整理的周报,旨在为您提供最新的博客更新、GitHub 动态、个人动态和其他周刊文章推荐等内容。 本周依旧在开发 草梅 Auth 中。 你也可以直接访问官网地址:auth.cmyr.dev/ Demo 站:auth-demo.cmyr.dev/ 文档地址:auth-docs.cmyr.dev/ 本周 草梅


SwiftUI redraw 机制全景解读:从 @State 到 Diffing
unravel20252025/10/4

为什么 UIKit 程序员总问“我的状态去哪了?” 特性UIKitSwiftUI视图定义与生命周期视图为类(Class),生命周期明确,长期驻留内存视图为值类型(Struct),每次刷新生成新实例状态保存方式状态保存在视图对象内部Struct 销毁后,状态需由外部系统(如 ObservableObject、@State 等)托管 SwiftUI 提供了一堆 Property Wrapper 来“假装”状态还在视图里,核心就是 @State。 @State


Vue基础10题:答不上来的,简历别写"熟悉Vue"
小时前端2025/10/3

前言 上周面了个应届生,简历上写着"熟悉Vue框架,有多个项目经验"。我问他v-if和v-show的区别,他说"一个是显示隐藏,一个是条件渲染"。我追问"那什么场景用哪个",他卡壳了,这就是典型的‘背题党’。 这就是大部分人的现状:概念背得滚瓜烂熟,一问实战场景就露馅。 今天这10道Vue基础题,每道题我都会告诉你:面试官为什么问这个、标准答案怎么说、什么回答会让你直接出局。每题都配"速记公式",面试前一晚看这篇就够了。 1. 什么是Vue.js?Vue的核心特性和设计理念是什么? 速记公式:


使用 uv 在 Windows 上快速搭建 Python 开发环境
马诗剑2025/10/2

本教程将指导你如何在 Windows 系统上,使用 uv(一个由 Ruff 的作者开发的极速 Python 打包和项目管理工具)来快速创建虚拟环境并安装项目依赖。uv 可以看作是 venv 和 pip 的一个更快、更现代的替代品。 环境要求 Windows 操作系统 已安装 Python (本教程以 Python 3.12 为例) Windows PowerShell 步骤 1: 安装 uv 首先,我们需要安装 uv。这里提供两种方法。 方法一:官方推荐脚本 (推荐) 从开始

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0