使用VS2010的负载测试功能和记录的网络测试。
我在录制的网络测试中遇到级联错误问题。也就是说,如果一个请求失败,其他几个请求也将失败。这会在日志中造成很多混乱,因为通常只有第一个错误是相关的。
有没有办法让失败的验证规则在失败时终止Web测试,而不是运行其余的请求?
(很明显,我仍然希望继续进行负载测试,只需停止该特定测试用例的特定迭代)
以下是一些示例代码,演示了我正在尝试做的事情:
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
namespace TestPlugInLibrary
{
[DisplayName("My Validation Plugin")]
[Description("Fails if the URL contains the string 'faq'.")]
public class MyValidationPlugin : ValidationRule
{
public override void Validate(object sender, ValidationEventArgs e)
{
if (e.Response.ResponseUri.AbsoluteUri.Contains("faq"))
{
e.IsValid = false;
// Want this to terminate the running test as well.
// Tried throwing an exception here, but that didn't do it.
}
else
{
e.IsValid = true;
}
}
}
}
答案 0 :(得分:2)
我找到了一个很好的解决方案。有一个博客here详细说明了它,但简短的版本是使用e.WebTest.Stop()。这会中止当前测试的当前迭代,同时根据需要保留其余的运行。
答案 1 :(得分:1)
使用Assert.Fail()。这将停止测试并抛出AssertFailedException,就像任何失败的断言一样。
if (e.Response.ResponseUri.AbsoluteUri.Contains("faq"))
{
e.IsValid = false;
Assert.Fail("The URL contains the string 'faq'.");
}
这将仅停止特定测试。在负载测试结束时,您可以看到因此异常而失败的测试总数。