Visual Studio has an out-of-the box plugin that generates GUIDs for you. However its a WebTest plugin, so it will only generate them once per webtest. You can’t include that plugin into a loop.
Fortunately we can write a simple WebTestRequest plugin that does what we want:
using System;
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
namespace LoadTestPlugins
{
[DisplayNameAttribute("Generate GUID")]
[DescriptionAttribute("Generates a GUID during a request")]
public class GenerateGUID : WebTestRequestPlugin
{
#region Methods
private void GenerateIt(WebTestContext Context)
{
Context[this.ContextParameterName] = Guid.NewGuid().ToString();
}
public override void PostRequest(object sender, PostRequestEventArgs e)
{
if(this.BeforeRequest == false)
{
this.GenerateIt(e.WebTest.Context);
}
}
public override void PreRequest(object sender, PreRequestEventArgs e)
{
if(this.BeforeRequest == true)
{
this.GenerateIt(e.WebTest.Context);
}
}
#endregion
#region Properties
[Description("Name of context parameter to store the number in"),
DisplayName("Context parameter"), IsContextParameterName(true)]
public string ContextParameterName {get; set;}
[Description("Whether to generate the number before or after the request has executed"),
DisplayName("Apply before request"),
DefaultValue(true)]
public bool BeforeRequest { get; set; }
#endregion
}
}