この記事では、既存のExcelテストデータからJSONファイルを作成し、ToscaでJSON配列(Element)を1件ずつ読みながらループ実行する方法を紹介します。
Excelではなく既存のJSONファイルを活用する場合は、記事の後半から参照してください。
前回紹介したODBC接続手法によるExcelデータ処理と異なり、環境差分を減らして「データをファイルとして管理」しやすくするのが狙いです。
背景:ODBCを避けたい理由と、JSONに寄せるメリット
ExcelをそのままODBCで読む構成は便利な一方で、開発現場だと次の理由で詰まりがちです。
- 実行端末ごとにODBCドライバ/DSNの準備が必要(運用負荷・環境差分)
- Excelロックや更新タイミングで、再現性に揺れが生じる
- CI/CDや複数人実行で扱いづらい
そこで「Excelは入力(原本)として残しつつ、実行はJSONで回す」構成にします。
- JSONはリポジトリ管理しやすい(差分が見える)
- 実行時にExcelを開く必要がなく、ロック問題が減る
- JSONPathで「欲しい要素だけ」取り出しやすい
この記事で紹介するもの
- Excel(原本)からJSONファイルを生成する(前処理)
- ToscaでJSONの配列
itemsを読み、{REPETITION}を使ってitems[i]を取り出す - 取り出した値をBuffer(変数)に入れて、同じテストケースを繰り返す
🧾 事前準備:Excelの形式(ヘッダ行必須)
Excelは 1シートに1つのテーブル表がある事を前提とします。
例:Form5 シート
| Phone | Username | Password | |
|---|---|---|---|
| test@example.com | 123456789 | Test | Password1! |
| john@example.com | 987065401 | John | Password1! |
列名は英数字 + _ 推奨です(JSONのキーとしてそのまま使うため)。
Step 1:Excel → JSONを作成する(PowerShell例)
ここではImportExcelモジュールを使ったPowerShell例を載せます。
生成するJSONの形
{
"count": 2,
"data": [
{
"Record": 1.0,
"E-Mail": "test@example.com",
"Phone": "123456789",
"Username": "Test",
"Password": "Password1!",
"Confirm Password": "Password1!",
"Comments": "Test Comment."
},
{
"Record": 2.0,
"E-Mail": "John@example.com",
"Phone": "987065401",
"Username": "John",
"Password": "Password1!",
"Confirm Password": "Password1!",
"Comments": "テストコメント."
}
]
}
PowerShell(例)
param(
[Parameter(Mandatory=$true)]
[string]$XlsxPath,
[Parameter(Mandatory=$true)]
[string]$WorksheetName,
[Parameter(Mandatory=$true)]
[string]$TableName,
[Parameter(Mandatory=$true)]
[string]$OutDir,
[string]$OutFileName = "export.json"
)
# ---- Validate paths ----
if (-not (Test-Path $XlsxPath)) {
throw "Excel file not found: $XlsxPath"
}
New-Item -ItemType Directory -Path $OutDir -Force | Out-Null
$outFile = Join-Path $OutDir $OutFileName
# ---- Ensure ImportExcel ----
if (-not (Get-Module -ListAvailable -Name ImportExcel)) {
Install-Module ImportExcel -Scope CurrentUser -Force
}
# ---- Get table address via EPPlus ----
$pkg = Open-ExcelPackage -Path $XlsxPath
$ws = $pkg.Workbook.Worksheets[$WorksheetName]
if (-not $ws) {
Close-ExcelPackage $pkg
throw "Worksheet not found: $WorksheetName"
}
$tbl = $ws.Tables[$TableName]
if (-not $tbl) {
Close-ExcelPackage $pkg
throw "Table not found: $TableName"
}
$addr = $tbl.Address
Close-ExcelPackage $pkg
# ---- Read only table range ----
$data = Import-Excel `
-Path $XlsxPath `
-WorksheetName $WorksheetName `
-StartRow $addr.Start.Row `
-EndRow $addr.End.Row `
-StartColumn $addr.Start.Column `
-EndColumn $addr.End.Column
# ---- Wrap with count ----
$result = [ordered]@{
count = $data.Count
data = $data
}
# ---- Export JSON ----
$result |
ConvertTo-Json -Depth 50 |
Set-Content -Path $outFile -Encoding UTF8
Write-Host "Exported JSON:" $outFile
Write-Host "Record count:" $data.Count
Excel COMは「実行端末にExcelが必要」かつ「プロセスが残る」事故が起きやすいので、運用で使う場合は後述の注意点も確認してください。
PowerShell(実行例:ファイル名:excel2json.ps1)
.\excel2json.ps1 `
-XlsxPath "C:\Files\Tosca_Test_Data\Vehicle_Test_Data.xlsx" `
-WorksheetName "Form1" `
-TableName "form1" `
-OutDir "C:\Files\Tosca_Test_Data\JSON" `
-OutFileName "Vehicle_Test_Data_form1.json"
| パラメータ | 値 |
|---|---|
| XlsPath | エクセルファイルのパス |
| WorksheetName | 出力対象のシート名 |
| TableName | 対象のテーブルの名称(名前範囲の定義) |
| OutDir | JSON出力フォルダ |
| OutFileName | JSON出力ファイル名 |
Step 2:ToscaからJSON生成を呼び出す(前処理として組み込む)
ローカルで手動生成して準備しても良いですし、Excelが更新されている場合はTosca実行の先頭でJSONを生成しておくと事故が減ります。
- 例:TBoxの「コマンド実行」で上記PowerShellを実行
- 引数で
ExcelPath / SheetName / JsonPathを渡せる形にしておくと運用しやすい
Step 3:JSONモジュールの作成
3-1 JSONファイルからモジュールの作成
-
JSONファイルを取り扱うにはAPIスキャンからJSONファイルのモジュール作成を行います。Tosca Commanderの
API TestingからAPI Scanを起動します。 -
API Scan画面にてFileを選択しJSONファイルを読込みます。 -
読み込んだファイルの内容を確認し
API Test CaseXML/JSON Test Caseと進みます。 -
これにてTosca Commander上にてJSONモジュールが作成されます。
-
複数のJSONファイルをテストする場合は、上記を繰り返した後、
API Scan画面を閉じます。
3-2 作成したモジュールの修正
実際にテストで利用するに当たってはJSONモジュールを汎用的に利用できるよう修正が必要です。
ここではレコードの分作成された、Item#の#2以降を削除します。
またItemを特定するための情報をPropertyの中から探し、ここではNameを削除します。
出来上がった状態が以下のようなModuleです。
dataの中にはItem#1のみを残し、Item#1のPropertyからNameを削除した状態です。
ここまで来れば事前準備が完了しTest Caseの作成にうつります。
Step 4:JSONのElementから値を取り出してLoopする(items[{REPETITION}])
4-1: JSON Resourceの読込
Toscaの中でJSON操作をするには、まず内部のResourceへ読み込む必要が有ります。
Open/Create JSON Fileというモジュールを開き作成したJSONファイルを読込ませます。その際に任意のResource名をアサインします(ここではform1)
また取得したRecordの件数をLoopの上限として処理したいので、
Step3で作成したモジュールを設定し、Countの箇所にBuffer変数を設定します。
4-2: Loop処理設定
ここではWhile Loopを利用します。
Exit Criteriaの設定を行います。
Exit Criteria(例)
-
While {REPETITION} < {$TableCount} + 1のように上限で止める
4-3: 実処理の中でのJSONの値の利用
JSONファイルの中身はそのままでは呼び出しが出来ませんので
ここではRecordに連番が含まれているので、その値を利用します。
Loop処理中に自動生成されるカウンターの{REPETITION} Propertyを活用しConstraintを設定しておきます
(連番などの項目がない場合はテーブルに作成するか、Item#1のPropertyの設定を活用する事で対応可能です)
上記では各項目をそれぞれBuffer変数に保存し、後処理で活用できる処理を行います。
4-4: Buffer変数の活用
ここまで来ると最後の処理は通常のToscaの操作と同様です。
保存しておいたBuffer変数をTest Stepの中で利用するだけです。
Step 5:実行
ここまで来れば、作成したTest Caseを実行するだけです。
実際に実行すると1テストケースで10回分のデータパターンのテストを高速で実行する事も可能です。
まとめ:Excelは“入力”、実行はJSONにて実施
- ODBCを使わず、Excel → JSONに変換してからToscaでLoopする構成を紹介しました
- ループ中は
items[{REPETITION}]を軸に、JSONPathで要素を取り出してBufferへ流し込みます - 環境差分/ロック問題を減らしつつ、データドリブン実行を継続できます










