You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio负载测试前预生成并配置JWT Token

在Visual Studio负载测试中全局获取并复用JWT Token的实现方案

这问题我之前处理过好几个类似的,要实现负载测试启动前仅调用一次登录API拿到Token,然后所有后续Web API请求复用它,其实分两种主流方式,选适合你的就行:

方式一:用Web性能测试+负载测试初始化步骤(无代码)

这种适合不想写代码的场景,纯靠Visual Studio的可视化配置搞定:

  • 第一步:创建登录专用的Web性能测试
    1. 新建一个Web性能测试项目,添加一个HTTP请求,指向你的登录API地址,请求方法设为POST。
    2. 在请求的“Body”标签页,设置登录参数(比如JSON格式的{"username":"xxx","password":"xxx"}),记得把内容类型设为application/json。
    3. 添加提取规则:右键这个登录请求,选择“添加提取规则”,选“JSON提取器”。在配置里,设置JSON路径为你的Token所在字段(比如$.access_token,根据实际响应结构调整),然后把提取到的值存到一个上下文变量里,比如命名为GlobalJwtToken。
  • 第二步:把登录测试设为负载测试的全局初始化操作
    1. 打开你的负载测试,找到左侧树状结构里的「初始化」节点,右键选择「添加测试」,把刚才创建的登录Web性能测试加进去。这样整个负载测试启动时,只会执行一次这个登录流程,提取到的Token会被存入负载测试的全局上下文。
  • 第三步:在所有Web API请求中复用Token
    打开每个需要授权的Web API请求,切换到「Headers」标签页,添加一个名为Authorization的请求头,值填Bearer %GlobalJwtToken%——这里的%变量名%是Visual Studio引用上下文变量的语法,会自动替换成之前提取到的Token。

方式二:用自定义代码实现(更灵活)

如果你的登录逻辑比较复杂(比如需要加验证码、加密参数等),用代码实现更可控:

  • 第一步:添加负载测试自定义初始化代码
    1. 右键你的负载测试,选择「编辑测试策略」,在「初始化」区域点击「添加自定义代码」,创建一个新的自定义代码类。
    2. 在生成的C#类里,编写调用登录API的逻辑,示例代码如下:
    using System;
    using System.Net.Http;
    using System.Threading.Tasks;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    
    public class GlobalLoginInitializer : WebTestPlugin
    {
        public override void PreWebTest(object sender, PreWebTestEventArgs e)
        {
            // 这里替换成你的登录API地址和参数
            var loginUrl = "https://your-api-domain/api/auth/login";
            var loginData = new { Username = "test_user", Password = "test_pass" };
    
            using (var client = new HttpClient())
            {
                var response = client.PostAsJsonAsync(loginUrl, loginData).Result;
                response.EnsureSuccessStatusCode(); // 确保请求成功
                var loginResult = response.Content.ReadAsAsync<dynamic>().Result;
                string jwtToken = loginResult.access_token; // 对应响应里的Token字段
    
                // 将Token存入全局上下文,供后续请求使用
                e.WebTest.Context["GlobalJwtToken"] = jwtToken;
            }
        }
    }
    
  • 第二步:在Web API请求中引用Token
    和方式一一样,在每个需要授权的请求里添加Authorization头,值为Bearer %GlobalJwtToken%。

注意事项

  • 确保你的JWT Token有效期足够覆盖整个负载测试的运行时长,如果测试时间超过Token有效期,可能需要调整初始化逻辑(比如定时重新获取,但你需求是仅调用一次,所以只要测试时长在有效期内就行)。
  • 提取规则或代码里的Token字段名一定要和登录API的响应结构匹配,不然会提取失败导致后续请求无权限。

内容的提问来源于stack exchange,提问作者Geri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:05:29