创建webtest以测试登录时出现的问题

时间:2011-03-14 18:30:31

标签: visual-studio-2010 webtest

我需要一些编码网络测试的帮助。

我创建了一个编码网络测试,以查看有多少帐户有效登录我的应用程序。我有很多帐户(2000+),我需要知道哪些是有效的。基本上,我记录了一个网页测试,该网页测试点击了一个URL并搜索了登录后页面中出现的某些特定文本。然后我创建了一个包含所有帐户名和密码的xml文件,并将其设置为凭据数据源。然后修改testrun.testrunco​​nfig以指定“每个数据源行一个测试”,以便为xml文件中的每一行运行测试。
在此之后,我将测试转换为“编码”网络测试。到现在为止还挺好。 当我尝试创建文件(以编程方式在文件中添加成功登录)时出现问题。我有一个私有声明的StreamWriter并尝试在测试构造函数中初始化它,但是这会抛出一个错误:“无法在代理yyy上运行webtest xxx:调用的目标抛出了异常”。 我尝试在声明它的同一行初始化流,但我得到了相同的结果。

有没有人知道如何完成所需的测试? 我知道我可以在没有编码网络测试的情况下完成此任务,但是为了收集成功的登录信息,我必须在测试结果中逐行进行,看看通过的是什么。 如果有人有更好的想法,那就非常欢迎!

最好的问候 贝托

2 个答案:

答案 0 :(得分:0)

你当然可以实现你所要求的,因为我也实施了类似的测试。

代码中必定存在导致运行时异常的错误。

不要使用控制器/代理程序装备,而是先尝试在本地运行测试,以便获得比通用“无法运行webtest”更好的错误消息。

或者,如果您发布了代码,也许有人可以发现错误。

答案 1 :(得分:0)

我会按照agentnega的建议在本地运行测试,以便获得更明确的错误消息。也许文件路径有问题。

除此之外,我会将测试记录下来,而不是将其转换为编码测试。 我将上下文变量设置为文件的路径,该文件将在最后成功登录,最好是相对于测试部署目录。 然后编写一个派生自WebTestRequestPlugin的请求插件类,并以与此类似的方式覆盖PostRequest()方法:

public override void PostRequest(object sender, PostRequestEventArgs e)
{
    if(Outcome.Pass == e.Request.Outcome)
    {
        string path = Path.Combine(e.WebTest.Context["$TestDeploymentDir"].ToString(), e.WebTest.Context["logins.txt"].ToString());

        StreamWriter sw = null;
        if (!File.Exists(path)) 
        {
            sw = File.CreateText(path);
        }
        else
        {
            sw = File.AppendText(path);
        }
        sw.WriteLine(e.WebTest.Context["Username"]);
    }
}