アクセス方法「カーソルを自動的に移動しない」が Web テスト データ ソースに対してどのように機能するかを理解するのに苦労しています。そしてそこにあるドキュメントは網羅的とはほど遠いようです.
まず、リクエストが 1 つだけの単純な Web テストがあるとします。DS と呼ばれるデータ ソースと、5 行を含む StepList と呼ばれるテーブルを使用します。
テーブルのアクセス方法は [カーソルを自動的に移動しない] に設定されており、現在のテスト設定では Web テスト プロパティで [データ ソース行ごとに 1 回実行] が有効になっています。Web テストは負荷テストの一部ではありません。
これらの条件では、テストは行ごとに 5 回実行されるため、基本的にカーソルは自動的に移動します。これは意図したものですか?
さて、この投稿の主題である実際的な質問に移ります。
上記の StepList テーブルには、とりわけ、ID 列と StepId 列があります。問題の Web テストは実際には別の Web テストから呼び出され、テスト コンテキストで設定された StepId を持つテーブル行に対してのみ実行されるはずです。
Id StepId
1 1
2 1
3 2
4 2
5 2
これを実現するために、ここのガイドラインに従い、次のような PreWebTest メソッドを使用して Web テスト プラグインを作成しました。
public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
string stepId = string.Empty;
if (e.WebTest.Context.ContainsKey(ContextParameterName))
{
stepId = e.WebTest.Context[ContextParameterName].ToString();
}
while (e.WebTest.Context["DS.StepList.StepId"].ToString() != stepId)
{
e.WebTest.MoveDataTableCursor("DS", "StepList");
}
}
上記のコードは、stepId の値が「2」の場合にのみ、サンプル テーブルで適切に機能するようです。"1" の場合、MoveDataTableCursor は WebTestEndOfDataException 例外をスローします: "AccessMethod Unique を持つデータ ソース テーブルにはデータの行がありません"。
例外をキャッチして Web テストを停止しようとしましたが、テストが終了しないように見えるため、これは機能しません。