序
AtCoderの問題を解き、入出力サンプルによるテストで動作確認する際、
手作業でコピーして出力を確認…の繰り返しでは意外と時間がかかってしまい、
特に100点~200点問題の正解時間に影響を与えます。
これを削減するために入出力データの組を与えて自動でテストを行うツールを作成しました。
ソース
導入
- 上のリンクからソースをダウンロードして適当なディレクトリに配置します。
-
.bashrc
などに関数として追加(↓)するか、atcoder_testtool
をPATHに追加します。- Windowsの場合は、Git-BashやCygwinなどの環境を使用してください。
actest_python() {
bash ~/Documents/dev/atcoder_testtool/actest_python.sh $1 $2
}
使い方
テストしたいソースファイルと同じディレクトリにデータファイルを作成します。ここではinput
というファイル名としました。
データファイルのフォーマットは以下のように、入力---出力===
の繰り返しになっています。
入力1
---
出力1
===
入力2
---
出力2
===
(最後の出力のあとも===
が必要)
actest_python
を実行し、引数にソースファイル名とデータファイルを与えれば順にテストされます。
$ actest_python B.py input
AC 91ms Expect: 2 Actual: 2
AC 92ms Expect: 0 Actual: 0
AC 91ms Expect: 5 Actual: 5
不正解や制限時間オーバーの場合の表示サンプルです。
制限時間は固定で2secとしました。
$ actest_python B.py input
WA 96ms Expect: 2 Actual: 3
TLE 2192ms Expect: 0 Actual: 0
AC 91ms Expect: 5 Actual: 5
データファイルを楽して作りたい
テストは楽に行なえますが、データファイルの作成がやっぱり面倒なので、
データファイルの作成を補助するツールも作りました。
上のGitHubにも含まれていますが、これです。
javascript: (function(){ let ans = ""; let i=0; while($(`.lang-ja #pre-sample${i}`).length > 0) { const input = $(`#pre-sample${i}`).html().trim(); const expect = $(`#pre-sample${i+1}`).html().trim(); ans += input + "\n---\n" + expect + "\n===\n"; i += 2; } console.log(ans); navigator.clipboard.writeText(ans); })();
これをブックマークに登録し…
問題ページで実行して…
貼り付けると、
データファイルができます!
結果
嬉しい!