Back Ground
RanorexはUIテスト自動化として有効なツールである。
このツールでdata drivenを簡単に使用できる。
このdata drivenはdata sourceを設定し、事前にその範囲(すべて , 1-5 といった指定行)を定義して実行させる。
ただ、業務上この指定範囲を動的に変更したい場合がある。
その実装手順をまとめたものである。
上記例では、data 100 patternがあるなかで、1-10を実行する
How
smart folder
data drivenを実行するsmart folder(上記図では、 Favorite_AddJockey_Loop)の名前をUniqueにする。
次の範囲指定を変更するプログラムでは、smart folder名をもとに処理実行させるため、unuqueでないと、処理が正しく動かないからである。
set data range user_code
data rangeを変更するrecord moduleを作成する。(既存のrecord moduleの中に含めてもよい。)
上記図では、Common_SetDataRangeに該当する。
そのrecord moduleの中身が下記である
set_loop_parameterのuser codeを呼び出し、引数として 実行したいrange (min, max)を指定する。
実際のset_loop_parameterのコードが以下である。
動作として、data sourceのrangeのminとmaxを指定する。
尚、プログラム上ではdataの先頭が0としてあつかわれるため、 -1 を行っている。
TestSuite.CurrentTestContainer は、現在のtest suiteのsmart folderを指す。
TestCaseNameでsmart folder名を取得し、そのsmart folderに対して、MinRange , MaxRange を設定するものである。
このTestCaseNameが先ほど指摘した通り、uniqueでないと、正しくCurrentTestCase が取れなくなるため、必ずuniqueにするように。
code
public void set_loop_parameter(string max, string min)
{
var TestCaseName = TestSuite.CurrentTestContainer.Name;
var CurrentTestCase = TestSuite.Current.GetTestContainer(TestCaseName);
CurrentTestCase.DataRange.MinRange = int.Parse(min) - 1;
CurrentTestCase.DataRange.MaxRange = int.Parse(max) - 1;
//setting the TestCaseName data range using items 1-10
CurrentTestCase.DataContext.SetRange(CurrentTestCase.DataRange.MinRange,CurrentTestCase.DataRange.MaxRange);
Report.Log(ReportLevel.Info, "Setting Data Range",
TestCaseName + " range:" + "\nMin: " + CurrentTestCase.DataRange.MinRange.ToString() + "\nMax: " + CurrentTestCase.DataRange.MaxRange.ToString());
}
このようにして、data rangeを動的に変更することができる