如何在Visual Studio 2017负载测试中设置Cookie值?
我刚好处理过类似的场景,给你两个实用的方案,根据你的需求选就行:
方法一:使用Web测试插件(推荐,全局生效更灵活)
因为负载测试是基于Web测试的,我们可以通过自定义插件在请求发送前动态注入Cookie:
- 在你的Web测试项目里,右键新建一个类(或者单独建个类库项目),让它继承
WebTestPlugin
- 在你的Web测试项目里,右键新建一个类(或者单独建个类库项目),让它继承
- 重写
PreRequest方法,从上下文参数取出值并设置Cookie,代码示例:
- 重写
using Microsoft.VisualStudio.TestTools.WebTesting; public class DynamicCookieInjector : WebTestPlugin { public override void PreRequest(object sender, PreRequestEventArgs e) { // 替换成你实际的上下文参数名 string cookieValue = e.WebTest.Context["YourDynamicValueParam"].ToString(); // 替换成Web应用要求的Cookie名称、路径和域名 Cookie targetCookie = new Cookie("DynamicCookieName", cookieValue, "/", "your-app-domain.com"); // 将Cookie添加到测试上下文,后续请求会自动携带 e.WebTest.Context.Cookies.Add(targetCookie); } }
- 编译项目后,回到Web测试编辑器,右键点击Web测试的根节点,选择「添加Web测试插件」,选中你刚才写的
DynamicCookieInjector
- 编译项目后,回到Web测试编辑器,右键点击Web测试的根节点,选择「添加Web测试插件」,选中你刚才写的
- 这样所有请求发送前,插件都会自动把上下文参数里的动态值注入到指定Cookie中,不用逐个请求修改
方法二:直接修改单个请求的Cookie头(适合局部场景)
如果只有少数几个请求需要这个Cookie,也可以直接编辑请求的HTTP头:
- 在Web测试里找到目标请求,展开它的「Headers」节点
- 点击「Add Header」,新增一个名为
Cookie的HTTP头
- 点击「Add Header」,新增一个名为
- 在头的值里用上下文参数语法引用你的动态值,比如:
DynamicCookieName={{YourDynamicValueParam}}
- 在头的值里用上下文参数语法引用你的动态值,比如:
- 保存后运行测试,VS会自动把上下文参数的值替换进去,生成正确的Cookie头
关键注意点
- 一定要确保上下文参数名、Cookie名称和Web应用里的完全一致(包括大小写),不然会失效
- 如果Web应用的Cookie有Domain或Path限制,在插件里创建Cookie时要对应设置正确的参数
- 测试前先单独运行Web测试,用「Web测试结果查看器」检查请求的Cookie是否正确携带,确认没问题再加入负载测试
内容的提问来源于stack exchange,提问作者Greener
相关产品推荐
相关产品推荐

