如何在 VS WebTest 中发布 Json 对象?

Posted

技术标签:

【中文标题】如何在 VS WebTest 中发布 Json 对象?【英文标题】:How to post a Json object in a VS WebTest? 【发布时间】:2016-11-22 17:28:04 【问题描述】:

我正在 Visual Studio 2015 Enterprise 中编写一些网络测试来对我的 API 进行负载测试。

我的几个 API 调用都需要一个 Json 对象作为请求的主体。但是 webtest 界面似乎没有任何方法可以直接设置 Post 请求的正文;您可以添加键和值,但不能将请求设置为将被隐式序列化的对象,甚至只是一个纯字符串。

那么如何在网络测试中发布 Json?

【问题讨论】:

【参考方案1】:

有两种选择,可能更多,具体取决于您的需要。这两种机制都有相同的属性集来设置 URL 和许多其他字段。

在 Web 测试编辑器中,您可以添加 Web 服务请求(Insert web service request 上下文菜单命令),然后将其设置为 StringBody 字段。字符串体的内容可以包含上下文参数。

普通请求的上下文菜单有一个Add file upload parameter

【讨论】:

【参考方案2】:

搜索了一段时间后,我找到了一个解决方案,允许您在 web 测试的 post 请求中通过 JSON 对象发送。

1) 创建网络测试性能插件:https://docs.microsoft.com/en-us/visualstudio/test/how-to-create-a-web-performance-test-plug-in?view=vs-2017

2) 将以下代码添加到类中(不要忘记构建):

using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;

namespace WebTests.RequestPlugins

    [DisplayName("Add JSON content to Body")]
    [Description("HEY! Tip! Uglify your JSON before pasting.")]
    public class AddJsonContentToBody : WebTestRequestPlugin
    
        [Description("Assigns the HTTP Body payload to the content provided and sets the content type to application/json")]
        public string JsonContent  get; set; 

    public override void PreRequest(object sender, PreRequestEventArgs e)
    
        var stringBody = new StringHttpBody();
        stringBody.BodyString = JsonContent;
        stringBody.ContentType = "application/json";

        e.Request.Body = stringBody;
    

3) 在您的请求 URL 上单击鼠标右键并选择“添加请求插件”,然后您应该会看到您的新插件。

4) Uglify 你的 json 以便能够粘贴。

5) 运行测试

源代码:https://ericflemingblog.wordpress.com/2016/01/21/helpful-custom-request-plugins-for-web-tests/

【讨论】:

【参考方案3】:

在web测试中->字符串正文->Content Type属性,

输入值“application/json” 将 json 添加到字符串正文中

Content Type Picture for Json Data

【讨论】:

以上是关于如何在 VS WebTest 中发布 Json 对象?的主要内容,如果未能解决你的问题,请参考以下文章

django-webtest 和 selenium 的区别

在 Visual Studio Webtest 中插入 120 秒等待

使用 vs2008 进行负载测试,如何从被测系统获取统计信息?

Visual Studio 2013 WebTest 请求失败:现有连接被远程主机强行关闭

VS 2010 Web负载测试 - 从CSV为每个虚拟用户设置唯一值

需要在 VS 负载测试中设置常用参数