是否可以对Coded WebTest请求进行单元测试并根据响应进行断言?

时间:2015-08-28 19:34:26

标签: c# unit-testing

我已经在C#中为Visual Studio Web性能测试编写了一个性能测试框架。

我编写了一个单元测试类来测试基类,但我还想为每个请求添加一个单元测试,这样我就可以通过添加WebTestPlugin来确保WebTests正常工作以获取响应状态代码。

到目前为止,我一直没有成功,在我脱掉头发之前,我想我会问是否有可能,不幸谷歌没有回答我的问题。

如果需要,我可以提供代码,但只是想象一下为webtest yield return结果编写单元测试。

感谢先进的任何帮助。

如同要求,这是我的代码。

单元测试

public void ContentAuthor_GetToken_GetRequest() {
        foreach (WebTestRequest myRequest in (new CWebTestExecutor(m_scenarioData))) {
            //TODO: Assert Status Code
        }
    }

WebTestPlugin& WebtTest执行官

using System.Collections.Generic;
using System.Net;
using Builder.Request;
using Data;
using Library;
using Microsoft.VisualStudio.TestTools.WebTesting;

namespace PerformanceTest.Requests.Library.UnitTests {
internal class CWebTestExecutor : WebTest {
    private readonly CScenarioData m_scenarioData;
    public CWebTestExecutorPlugin WebTestExecutorPlugin;

    public CWebTestExecutor(CScenarioData scenarioData) : this() {
        m_scenarioData = scenarioData;
    }
    public CWebTestExecutor() {
        WebTestExecutorPlugin = new CWebTestExecutorPlugin();
        PreAuthenticate = true;
    }

    public override IEnumerator<WebTestRequest> GetRequestEnumerator() {
        PostRequest += WebTestExecutorPlugin.PostRequest;
        yield return new CBuildRequest().BuildStructure(new CRequest().GetToken(m_scenarioData));
    }
}
public class CWebTestExecutorPlugin : WebTestPlugin {
    public HttpStatusCode PageResult { get; private set; }

    public override void PostRequest(object sender, PostRequestEventArgs e) {
        PageResult = e.Response.StatusCode;
    }
}

}

现在,当执行此操作时,执行程序正常工作且插件已关联,但执行yield return不会触发PostRequest事件,因此无法获取响应状态代码。

如果这不能解释问题,请告诉我,我会尝试提供更多详细信息。

0 个答案:

没有答案