Visual Studio 性能测试文件上传参数前缀日期



我有一个问题,希望有一个简单的解决方案,我忽略了......这是我第一次将文件上传参数与Visual Studio性能测试工具一起使用。当我第一次运行 Web 性能测试时,我的测试找到了该文件并按预期上传了它。但是,当我现在重新运行测试时,我在结果的"详细信息"部分中收到 500 内部服务器错误,并且我注意到我的文件名包含似乎以请求中的正确名称为前缀的时间戳。由于我的文件名没有更改,这会导致 Visual Studio 无法找到我的文档。

我为此测试生成了代码,因为我需要手动重置 SSL 设置。我的文档被移动到"测试结果"文件夹,因为我用它作为部署项修饰了该方法。Visual Studio 在我生成代码时会自动执行此操作,这非常好,但可能是问题所在......任何帮助将不胜感激!这是我发出的 POST 请求:

WebTestRequest request11 = new WebTestRequest((this.Context["Environment"].ToString() + "/Submit/Upload"));
request11.Method = "POST";
request11.Headers.Add(new WebTestRequestHeader("Referer", (this.Context["Environment"].ToString() + "/Submit/Index/fakefolder456")));
FormPostHttpBody request11Body = new FormPostHttpBody();
request11Body.FormPostParameters.Add(new FileUploadParameter("files", "Test3.pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation", true));
request11Body.FormPostParameters.Add("folderId", "fakeId123");
request11Body.FormPostParameters.Add("fileNamePairs", "[{"OriginalFileName" : "Test3.pptx","NewFileName" : "Test3.pptx"}]");
request11Body.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString());
request11.Body = request11Body;
yield return request11;
request11 = null;

找到了我问题的解决方案——我的文件上传参数将"生成唯一名称"设置为"true"。Visual Studio 使文件名唯一的方法是采用今天的日期和时间,并将其附加到给定的文件名前面。此外,您需要确保要上传的文件已传输到输出文件夹。我通过双击我的测试设置文件,选中"启用部署"框,然后将我的文件添加到要部署的文件中来做到这一点。我相信这将为每个测试部署文件......最好只为我的测试部署文件。这些链接对我的研究有帮助:https://blogs.msdn.microsoft.com/edglas/2008/08/05/how-to-upload-a-file-in-a-web-test/,

https://blogs.msdn.microsoft.com/alikl/2010/04/26/file-upload-in-a-web-test-the-case-of-submitting-a-form-with-javascript/,

https://social.msdn.microsoft.com/Forums/en-US/3d094493-9b9b-4c78-bb98-f80068a643fc/is-it-possible-to-add-deployment-item-to-the-webtest-using-code?forum=vstswebtest。

对于那些在评论中阅读了AdrianHHH的出色帮助的人,我学会了如何使用Ben Day的Pluralsight课程"使用Visual Studio进行负载测试"https://app.pluralsight.com/library/courses/load-testing-visual-studio-2013/table-of-contents 编写Web测试插件,我的插件看起来像这样:

namespace WebTestPlugins
{
    public class SsoAuth : WebTestPlugin
    {
        public override void PreWebTest(object sender, PreWebTestEventArgs e)
            {
            // Set the security protocol to TLS 1.2
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            }
    }
}

最新更新