@echo off rem 遅延環境変数に対応させる setlocal ENABLEDELAYEDEXPANSION rem 基準ディレクトリ set BASE_DIR=C:\basedir rem Newman実行設定ファイル名 set NEWMAN_SETTING_FILENAME=newmanExeConf.csv rem 日時取得 set TEST_DATE_yyyyMM=%date:~0,4%%date:~5,2% set TEST_DATE_yyyyMMdd=%date:~0,4%%date:~5,2%%date:~8,2% set TEST_TIME=%time: =0% set TEST_DATE_HHmm=%TEST_TIME:~0,2%%TEST_TIME:~3,2% set TEST_DATE_HHmmss=%TEST_TIME:~0,2%%TEST_TIME:~3,2%%TEST_TIME:~6,2% set TEST_DATE_yyyyMMdd_HHmmss=%TEST_DATE_yyyyMMdd%_%TEST_DATE_HHmmss% rem ログ格納ディレクトリ set LOG_DIR=%BASE_DIR%\logs\%TEST_DATE_yyyyMM% mkdir %LOG_DIR% > NUL 2>&1 set LOG_FILEPATH=%LOG_DIR%\newmanrun-%TEST_DATE_yyyyMMdd_HHmmss%.log rem コマンド名 set cmd_name=%~0 rem 開始ログ出力 echo %date% %time: =0% Newman実行バッチ開始 >> %LOG_FILEPATH% rem 引数確認 set argcount=0 :ARGS_LOOP if not "%~1"=="" ( set /a argcount=argcount+1 rem echo %date% %time: =0% !cmd_name! ARGS[!argcount!] %~1 >> %LOG_FILEPATH% echo %date% %time: =0% コマンド引数%~1は使用しません >> %LOG_FILEPATH% shift goto ARGS_LOOP ) rem テストファイル格納基準ディレクトリ set TESTFILES_DIR=%BASE_DIR%\testFiles rem Newman実行設定ファイルパス set NEWMAN_CMDPARAM_FILEPATH=%TESTFILES_DIR%\%NEWMAN_SETTING_FILENAME% echo %date% %time: =0% NEWMAN_CMDPARAM_FILEPATH=%NEWMAN_CMDPARAM_FILEPATH% >> %LOG_FILEPATH% rem テスト結果格納ディレクトリ set RESULT_ROW_DIR=%BASE_DIR%\resutRaw rem 実行カウンタ set execount=0 rem newman実行 for /F "usebackq eol=# tokens=1-6 delims=," %%a in ("%NEWMAN_CMDPARAM_FILEPATH%") do ( rem 区切り出力 set /a execount=execount+1 set printexecount=00000!execount! echo %date% %time: =0% ***** newman execute !printexecount:~-5! *************************************************************************** >> %LOG_FILEPATH% rem コレクション名 set COLLECTION_NAME=%%a echo %date% %time: =0% COLLECTION_NAME=!COLLECTION_NAME! >> %LOG_FILEPATH% rem 実行するコレクションファイルパス if "%%b"=="" ( set COLLECTION_PATH=%TESTFILES_DIR%\!COLLECTION_NAME!\!COLLECTION_NAME!.collection.json ) else ( set COLLECTION_PATH=%TESTFILES_DIR%\!COLLECTION_NAME!\%%b ) echo %date% %time: =0% COLLECTION_PATH=!COLLECTION_PATH! >> %LOG_FILEPATH% rem 実行するコレクションフォルダ名 if "%%c"=="" ( set FOLDER_OPT= ) else ( set FOLDER_OPT=%%c ) echo %date% %time: =0% FOLDER_OPT=!FOLDER_OPT! >> %LOG_FILEPATH% set FOLDER= if not "!FOLDER_OPT!"=="" ( for /f "tokens=1-4 delims=|" %%o in ("!FOLDER_OPT!") do ( if not "%%o"=="" ( set FOLDER=--folder %%o echo %date% %time: =0% FolderOption-1=%%o >> %LOG_FILEPATH% ) if not "%%p"=="" ( set FOLDER=!FOLDER! --folder %%p echo %date% %time: =0% FolderOption-2=%%p >> %LOG_FILEPATH% ) if not "%%q"=="" ( set FOLDER=!FOLDER! --folder %%q echo %date% %time: =0% FolderOption-3=%%q >> %LOG_FILEPATH% ) if not "%%r"=="" ( set FOLDER=!FOLDER! --folder %%r echo %date% %time: =0% FolderOption-4=%%r >> %LOG_FILEPATH% ) ) ) echo %date% %time: =0% FOLDER=!FOLDER! >> %LOG_FILEPATH% rem 実行するコレクションの環境設定ファイルパス if "%%d"=="" ( set ENV_PATH= ) else if "%%d"=="default" ( set ENV_PATH=-e %TESTFILES_DIR%\!COLLECTION_NAME!\!COLLECTION_NAME!.environment.json ) else ( set ENV_PATH=-e %TESTFILES_DIR%\!COLLECTION_NAME!\\%%d ) echo %date% %time: =0% ENV_PATH=!ENV_PATH! >> %LOG_FILEPATH% rem 実行するコレクションのデータファイルパス if "%%e"=="" ( set DATA_PATH= ) else if "%%e"=="default" ( set DATA_PATH=-d %TESTFILES_DIR%\!COLLECTION_NAME!\!COLLECTION_NAME!.data.json rem 実行するテストケース数 if "%%f"=="" ( set ITERATION= ) else if "%%f"=="default" ( for /f "usebackq" %%x in (`type !DATA_PATH! ^| jq-win64 length`) do set ITERATION=-n %%x ) else ( set ITERATION=-n %%f ) ) else ( set DATA_PATH=-d %TESTFILES_DIR%\!COLLECTION_NAME!\%%e rem 実行するテストケース数 if "%%f"=="" ( set ITERATION= ) else if "%%f"=="default" ( for /f "usebackq" %%x in (`type !DATA_PATH! ^| jq-win64 length`) do set ITERATION=-n %%x ) else ( set ITERATION=-n %%f ) ) echo %date% %time: =0% DATA_PATH=!DATA_PATH! >> %LOG_FILEPATH% echo %date% %time: =0% ITERATION=!ITERATION! >> %LOG_FILEPATH% rem newman実行 echo %date% %time: =0% newman run !COLLECTION_NAME! start. >> %LOG_FILEPATH% echo %date% %time: =0% newman run !COLLECTION_PATH! !FOLDER! !ENV_PATH! !DATA_PATH! !ITERATION! -r "json,htmlextra" --disable-unicode --reporter-json-export %RESULT_ROW_DIR%\%TEST_DATE_yyyyMM%\%TEST_DATE_yyyyMMdd_HHmmss%\!COLLECTION_NAME!\result_!printexecount:~-5!_!COLLECTION_NAME!.json --reporter-htmlextra-export %RESULT_ROW_DIR%\%TEST_DATE_yyyyMM%\%TEST_DATE_yyyyMMdd_HHmmss%\!COLLECTION_NAME!\result_!printexecount:~-5!_!COLLECTION_NAME!.html >> %LOG_FILEPATH% call newman run !COLLECTION_PATH! !FOLDER! !ENV_PATH! !DATA_PATH! !ITERATION! -r "json,htmlextra" --disable-unicode --reporter-json-export %RESULT_ROW_DIR%\%TEST_DATE_yyyyMM%\%TEST_DATE_yyyyMMdd_HHmmss%\!COLLECTION_NAME!\result_!printexecount:~-5!_!COLLECTION_NAME!.json --reporter-htmlextra-export %RESULT_ROW_DIR%\%TEST_DATE_yyyyMM%\%TEST_DATE_yyyyMMdd_HHmmss%\!COLLECTION_NAME!\result_!printexecount:~-5!_!COLLECTION_NAME!.html set exitcd=!errorlevel! echo %date% %time: =0% newman run command result = !exitcd! >> %LOG_FILEPATH% echo %date% %time: =0% newman run !COLLECTION_NAME! end. >> %LOG_FILEPATH% if !exitcd! neq 0 ( set /a exiterrcount=!exiterrcount!+1 ) ) if !exiterrcount! neq 0 ( rem 終了ログ出力(エラー) echo %date% %time: =0% Newman実行バッチ異常終了 エラー発生回数:%exiterrcount% >> %LOG_FILEPATH% endlocal exit /b 1 ) rem 終了ログ出力 echo %date% %time: =0% Newman実行バッチ正常終了 >> %LOG_FILEPATH% endlocal exit /b 0