2010年11月1日月曜日

WindowsXP(eclipse)でGAE/Pのテスト駆動開発(nose)

WindowsXP環境でeclipse(PyDev)を使ってGoogle App Engine の開発をしているのですが、
・テストコードを簡単に実行したい
・エラーの有無を実行結果の色で判別したい
という思いから、以下のようなバッチを作ってみました。
 <nosetest.bat>
@ECHO OFF
CD /D %~dp0
REM ========================================
REM nosetests 起動バッチ
REM   ①nosetests にパラメータを指定して起動、出力結果を一時ファイルに保存
REM   ②テストでエラーなし:テスト結果を標準出力に出力
REM     テストでエラーあり:テスト結果をエラー出力に出力
REM   ③30秒間(パラメータ1で変更可能)そのままポーズして終了
REM ========================================
REM 起動パラメータ:
REM     パラメータ1=指定された秒数だけ表示(デフォルトは30秒)
REM     パラメータ2=nosetestsの追加パラメータ
REM ========================================

IF "%1"=="" (SET WAIT_TIME=30) ELSE (SET WAIT_TIME=%1)
SET EXTENDS = %~2
SET /A WAIT_TIME=%WAIT_TIME%+1 >NUL

REM ======================================
REM 内部パラメータ:
REM     EXE_COMAND=nosetest.exeの起動コマンド(必要に応じてpathも指定)
REM     SRC_PATH=ソースディレクトリの相対パス
REM     NOSETESTS_RESULT_FILE=noseの実行結果の保存ファイル
REM ======================================

SET EXE_COMAND=nosetests.exe -v --with-gae --gae-lib-root="C:\Program Files\Google\google_appengine" --without-sandbox
SET SRC_PATH=..\src
SET NOSETESTS_RESULT_FILE=nosetests_result.txt

REM ======================================
REM 実処理
REM ======================================

SET EXE_COMAND=%EXE_COMAND% %EXTENDS%
TITLE %EXE_COMAND%

CD /D %SRC_PATH%
%EXE_COMAND% 2>%~dp0\%NOSETESTS_RESULT_FILE%
CD /D %~dp0
FINDSTR "FAILED (*" %NOSETESTS_RESULT_FILE% > NUL
SET ERROR_CODE=%ERRORLEVEL%

IF "%ERROR_CODE%"=="0" (color 4F & type %NOSETESTS_RESULT_FILE% 1>&2 & SET RETURN_CODE=1) ELSE (color 27 & type %NOSETESTS_RESULT_FILE% 2>&1 & SET RETURN_CODE=0)
@PING -n %WAIT_TIME% localhost >NUL
EXIT /B %ERROR_CODE%

動作確認環境:WindowsXP SP3 + eclipse3.5.2 ( +PyDev 1.6.3 + Nose 0.11.4+ NoseGAE 0.1.7)

配置はこんな感じを前提にしてます。
[workspace]\[project]\bat\nosetest.bat
[workspace]\[project]\src\app.yaml
[workspace]\[project]\src\app.yaml
[workspace]\[project]\src\main.py
[workspace]\[project]\src\test_main.py
[workspace]\[project]\src\htmlgenerator\base.py
[workspace]\[project]\src\htmlgenerator\test_base.py
使い方:
その1:
  外部ツールにnosetests.batを登録、起動時のパラメータに0を指定。
  登録した外部ツールを、一度実行。
  「前回実行した外部ツールを起動」のメニューに、Ctrl+Tを割り当て。
 その2:
  ショートカットを作成して、スタートメニューに登録。
  Windowsキーを押してスタートメニューを表示させて、Nを押す。

0 件のコメント:

コメントを投稿