如何访问运行设置 - > Context继承自WebTest的类中的代码的参数

时间:2016-04-01 13:57:57

标签: c# visual-studio-2013 performance-testing

VS2013,我有负载测试。我希望能够在各种环境中运行此负载测试,例如dev,staging,production。我希望能够在运行时传递一些特定于环境的信息,例如服务器URL,登录信息等。所以我在考虑配置或上下文参数。我可以找到有关如何添加上下文参数(https://msdn.microsoft.com/en-us/library/ff406971(v=vs.120).aspx)的大量信息,但没有关于如何访问所述参数的信息。有人能指出我正确的方向吗?上下文参数是否适合工作?

3 个答案:

答案 0 :(得分:1)

我最好能够为VS负载测试添加“配置”是使用上下文参数。为此,您需要:

  1. 添加上下文参数(右键单击所需的运行设置)。
  2. 然后,为了能够通过编码访问这些参数 WebTests,您需要创建一个负载测试插件类(参见下面的插件类)。
  3. 最后,您需要将此插件添加到loadtest(右键单击负载测试的根节点)。
  4. 此类将添加编码WebTest的所有活动运行设置的上下文参数。

    using System;
    using Microsoft.VisualStudio.TestTools.LoadTesting;
    
    namespace VerificationLoadTest
    {
        public class ContextParameterLoadTestPlugin : ILoadTestPlugin
        {
            LoadTest LoadTest;
            public void Initialize(LoadTest loadTest)
            {
                this.LoadTest = loadTest;
                this.LoadTest.TestStarting += new EventHandler<TestStartingEventArgs>(TestStarting);
            }
    
            void TestStarting(object sender, TestStartingEventArgs e)
            {
                foreach (string key in LoadTest.Context.Keys)
                {
                    e.TestContextProperties.Add(key, LoadTest.Context[key]);
                }
            }               
        }
    } 
    

    编译项目并将插件添加到loadtest(上面的步骤3)后,可以像这样访问参数:

    public class ContextParameterTest : WebTest
    {
         public override IEnumerator<WebTestRequest> GetRequestEnumerator()
         {
              var serviceUrl = this.Context[ContextParamKey].ToString();
              WebTestRequest webTestRequest = new WebTestRequest(serviceUrl);
    
              ... build your request
    
              request.PostRequest += request_PostRequest;
              yield return request;
              request = null;
         }
    }    
    

答案 1 :(得分:1)

在VS 2015中,我认为在这方面没有太大的不同,所有负载测试上下文条目在C#到WebTest.Context中可用,并且不需要通过显式添加一个插件。在加载测试插件中,您还可以通过LoadTest.Context访问负载测试上下文。

在调查这些类型的问题时,我发现调试测试非常宝贵。除Run之外,Load Tests,Web Tests(* .webtest)和Coded Web Tests(通过上下文菜单)都支持Debug操作。这将尊重您的断点,并允许您围绕WebTest实例的所有成员。如果您没有使用编码网络测试,则必须在某处放置C#代码来设置断点,例如通过自定义插件,提取器等

答案 2 :(得分:0)

您提供的链接包含

字样
  

...如果负载测试中的Web性能测试在负载测试中使用相同的上下文参数名称作为上下文参数,则负载测试中的上下文参数将覆盖Web性能测试中使用的上下文参数

可以在Web测试中的许多位置使用上下文参数,然后将其括在双花括号中。例如,上下文参数中的值,例如MyContextParameter,可以在URL或查询字符串等中使用,样式{{MyContextParameter}}也是some text {{MyContextParameter}} and more text

可以使用e.WebTest.Context字段在Web测试插件或Web测试请求插件中读取上下文参数,其中e...EventArgs参数。