感谢您的回复。但我们不想重复测试用例。 目前,我们正在阅读的配置文件中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);
}
}
然后这个插件用于每个web性能测试。 任何更多的帮助/提示将是hlpfull。
这不是一个答案。请编辑原始问题以包含此信息。但也请在上面的问题中*和“我们不想重复测试用例”*之间明确地表明*之间的矛盾,以便不必每次都改变网络测试*。 – AdrianHHH
我同意,这不是确切的答案,但它满足我的需求。 “我们不希望重复测试用例意味着” - 我们为各个团队以及分段和集成环境设立了分支机构,我们希望通过命令提示符在所有这些环境中运行这些测试,并最小化用户交互。所以我们需要从配置文件中读取Web服务器路径。 “所以网络测试不需要每次都改变” - 也指同一事物,不同分支上的结果应该在MTM中可见。我希望,我已经澄清了这个疑问。 – Pushkar