gpt4 book ai didi

C# 使用 WebTestRequest 运行并发请求

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:39 25 4
gpt4 key购买 nike

使用 Web Performance Test API 编写编码的 Web 测试时。您能否编写同时发送请求的测试,即并发请求,即与负载测试的一个用户一起触发并发 Web 请求?

编辑:添加额外信息

我发现将请求添加到另一个请求的 dependentRequest 属性意味着 dependentRequests 是同时运行的。旁白:为什么有关此功能的 Microsoft 文档如此简洁?

场景 1:假设我有两个 Web 请求

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
var request1 = new WebTestRequest("request1Uri");
var request2 = new WebTestRequest("request2Uri");

yield return request1;
yield return request2;
}

上面按顺序运行,如果我想同时运行它们(request1 和 request2),我必须添加第三个请求并像下面那样运行它,它有效但想知道是否有更清洁的(不创建第三个请求)方式?因为添加不需要的请求会影响结果。

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
var request1 = new WebTestRequest("request1Uri");
var request2 = new WebTestRequest("request2Uri");
var request3 = new WebTestRequest("request3Uri");
request3.DependentRequests.AddRange(new[] { request2, request1 });

yield return request3;
}

场景 2:据我所知,依赖请求只是“一个深度”,我的意思是

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
var request1 = new WebTestRequest("request1Uri");
var request2 = new WebTestRequest("request2Uri");
var request3 = new WebTestRequest("request3Uri");
var request4 = new WebTestRequest("request4Uri");
var request5 = new WebTestRequest("request5Uri");

request3.DependentRequests.AddRange(new[] { request2, request1 });
request5.DependentRequests.AddRange(new[] { request4, request3 });

yield return request5;
}

相同
public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
var request1 = new WebTestRequest("request1Uri");
var request2 = new WebTestRequest("request2Uri");
var request3 = new WebTestRequest("request3Uri");
var request4 = new WebTestRequest("request4Uri");
var request5 = new WebTestRequest("request5Uri");

request5.DependentRequests.AddRange(new[] { request2, request1, request4, request3 });

yield return request5;
}

如果我想要第一个示例(在场景 2 中)的预期行为,我该如何使用 webTest api 实现它?

最佳答案

根据我的经验。使用 WebTestRequest 的依赖请求属性是一种使用 Microsoft 的 Web 性能测试 API 获取并发请求的方法。

对于场景 1,我没有发现比问题中已有的更好的东西。

对于场景 2,我做了类似于下面的事情,以足够接近我想要的行为

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
var request1 = new WebTestRequest("request1Uri");
var request2 = new WebTestRequest("request2Uri");
var request3 = new WebTestRequest("request3Uri");
var request4 = new WebTestRequest("request4Uri");
var request5 = new WebTestRequest("request5Uri");
var request6 = new WebTestRequest("request6Uri");

request6.DependentRequests.AddRange(new[] { request2, request1 });
request5.DependentRequests.AddRange(new[] { request4, request3 });

yield return request5;
yield return request6;
}

关于C# 使用 WebTestRequest 运行并发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com