4

使用 VS2010 的负载测试功能和记录的 webtests。

我在记录的网络测试中遇到级联错误问题。也就是说,如果一个请求失败,其他几个请求也会失败。这会在日志中造成很多混乱,因为通常只有第一个错误是相关的。

有没有办法让失败的验证规则在失败点终止 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;
            }
        }
    }
}
4

2 回答 2

2

我找到了一个很好的解决方案。这里有一个博客详细介绍了它,但简短的版本是使用 e.WebTest.Stop()。这会中止当前测试的当前迭代,同时根据需要保持运行的其余部分完好无损。

于 2013-01-25T23:45:57.200 回答
1

使用Assert.Fail()。这将停止测试并抛出AssertFailedException,就像任何失败的断言一样。

if (e.Response.ResponseUri.AbsoluteUri.Contains("faq"))
{
    e.IsValid = false;
    Assert.Fail("The URL contains the string 'faq'.");
}

这将只停止特定的测试。在负载测试结束时,您可以看到由于此异常而失败的测试总数。

于 2013-01-22T22:36:59.663 回答