【问题标题】:Visual Studio Load Testing - Which post web test event handler to useVisual Studio 负载测试 - 使用哪个发布 Web 测试事件处理程序
【发布时间】:2017-07-11 21:52:09
【问题描述】:

我的测试类中有一个静态对象,它通过负载测试插件填充,需要使用每个请求返回的数据进行更新。除了响应数据之外,我唯一需要的信息是发送请求时使用的原始 webtest 上下文中的 WebTestUserId。

我似乎可以通过验证规则来做到这一点:

ValidationClass: ValidationRule
{
    public override void Validate(object sender, ValidationEventArgs e)
    {
        JObject responseBody = JObject.Parse(e.Response.BodyString);           
        int webTestUserId= ((TheTestClass)sender).Context.WebTestUserId;

        // update some static field in the test class
    }
}

但是,我确实看到了其他可能有效的选项,但在查找有关差异或推荐方法的文档时遇到了麻烦。我看到了事件处理程序:

WebTest.PostWebTest, WebTest.ValidateResponse, WebTest.ValidateResponseOnPageComplete 和 LoadTest.TestFinished(将在插件中使用)

我不能发布超过 2 个链接,但可以在 WebTest 类上找到两个未超链接的事件处理程序。

在什么情况下应该使用这些?

【问题讨论】:

    标签: c# visual-studio visual-studio-2015 event-handling load-testing


    【解决方案1】:

    Validation rules 旨在检查测试是否正确运行,并在适当的情况下设置失败状态和失败消息。出于您的目的,最好使用插件来检索和保存所需的数据。如果数据来自特定请求,则使用WebTestRequestPluginPostRequest 方法。如果需要从所有请求中收集数据,则使用WebTestPluginPostRequest 方法。

    不同插件(也包括提取和验证规则)类型的功能之间存在重叠。从 Microsoft 文档中应该可以清楚地了解它们的目的。 Web 测试项仅从显式调用它们的 Web 测试中调用。负载测试插件的TestStartingTestFinished 方法被调用作为负载测试的一部分执行的所有测试。

    问题中代码的最终赋值可以简化为int webTestUserId = e.WebTest.Context.WebTestUserId;。这适用于验证规则和插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多