1

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

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

有人对我如何完成所需的测试有任何想法吗?我知道我可以在没有编码的 Web 测试的情况下完成此操作,但是要收集成功的登录信息,我必须在测试结果中逐行查看哪些是通过的。如果有人有更好的想法,非常欢迎!

最好的问候
贝托

4

2 回答 2

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"]);
    }
}
于 2012-02-23T13:49:16.043 回答
0

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

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

不要使用控制器/代理装备,而是先尝试在本地运行测试,这样您可能会得到比通用的“无法运行 webtest”更好的错误消息。

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

于 2011-06-01T15:34:55.050 回答