感谢您的回复。但是我们不想重复测试用例。
目前,我们将 WebTestPlugin 类中的配置文件读取为
public class LoginAssistPlugin : WebTestPlugin
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = configFilePath;
_config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
}
上面的方法写在插件类的构造函数中。
并且服务器主机名设置为静态变量。然后我们使用下面 WebTestPlugin 类中的其他可覆盖方法来替换 Web 性能测试中的 WebContext 参数。
public override void PreRequest(object sender, PreRequestEventArgs e)
{
e.Request.Url = e.Request.Url.Replace("{{WebServer}}", _webServer);
e.Request.Url = e.Request.Url.Replace("{{IdentityServer}}", _identityServer);
e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{WebServer}}", _webServer));
e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{ClientId}}", _clientId));
e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{WebClientPath}}", _webClientPath));
//if(e.WebTest.Name == "signin")
// e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{UserName}}", userName));
e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{WebClientPath}}", _webClientPath));
e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{IdentityServer}}", _identityServer));
e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{WebServer}}", _webServer));
e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{ClientId}}", _clientId));
if (_token != null)
{
e.Request.Headers.Add("Authorization", "Bearer " + _token);
}
}
然后这个插件用于每个网络性能测试。
任何更多的帮助/提示将是 hlpfull。