1

コード化された Web テストについて助けが必要です。

アプリケーションへのログインに有効なアカウントの数を確認するために、コード化された Web テストを作成しました。私はたくさんのアカウント (2000 以上) を持っていますが、どれが有効かを知る必要があります。基本的に、URL にヒットし、ログイン後にページに表示される特定のテキストを検索する Web テストを記録しました。次に、すべてのアカウント名とパスワードを含む xml ファイルを作成し、資格情報データ ソースとして設定しました。次に、testrun.testrunco​​nfig を変更して「データソース行ごとに 1 つのテスト」を指定し、xml ファイルのすべての行に対してテストを実行します。
この後、テストを「コード化された」Web テストに変換しました。ここまでは順調ですね。ファイルを作成しようとすると(プログラムで成功したログインをファイルに追加するために)、問題が発生します。StreamWriter を非公開で宣言し、テスト コンストラクターで初期化しようとしましたが、「エージェント yyy で webtest xxx を実行できませんでした: 呼び出しのターゲットによって例外がスローされました」というエラーがスローされます。宣言されている同じ行でストリームを初期化しようとしましたが、同じ結果が得られます。

目的のテストをどのように達成できるかについて、誰かが考えを持っていますか? コード化された Web テストなしでこれを達成できることはわかっていますが、成功したログイン情報を収集するには、テスト結果を 1 行ずつ調べて、合格したものを確認する必要があります。誰かがより良いアイデアを持っているなら、それは大歓迎です!

よろしく
ベト

4

2 に答える 2

0

私も同様のテストを実施しているので、あなたは確かにあなたが求めていることを達成することができます。

実行時にその例外を引き起こしているコードにエラーがあるはずです。

コントローラ/エージェントリグを使用する代わりに、最初にローカルでテストを実行してみてください。そうすれば、一般的な「webtestを実行できませんでした」よりも適切なエラーメッセージが表示される可能性があります。

または、コードを投稿した場合、おそらく誰かがエラーを見つける可能性があります。

于 2011-06-01T15:34:55.050 に答える
0

エラーのより明確なメッセージを取得するために、テストをローカルで実行するというエージェントネガの提案に従います。ファイルパスに問題がある可能性があります。

これに加えて、コード化されたものに変換するのではなく、テストを記録したままにします。最後に成功したログインを含むファイルのパスにコンテキスト変数を設定します。できれば、テスト展開ディレクトリに相対的です。次に、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 に答える