2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AtCoderのテストツール for Pythonを作った

Last updated at Posted at 2020-02-26

image.png

AtCoderの問題を解き、入出力サンプルによるテストで動作確認する際、
手作業でコピーして出力を確認…の繰り返しでは意外と時間がかかってしまい、
特に100点~200点問題の正解時間に影響を与えます。

これを削減するために入出力データの組を与えて自動でテストを行うツールを作成しました。

ソース

導入

  • 上のリンクからソースをダウンロードして適当なディレクトリに配置します。
  • .bashrcなどに関数として追加(↓)するか、atcoder_testtoolをPATHに追加します。
    • Windowsの場合は、Git-BashやCygwinなどの環境を使用してください。
actest_python() {
    bash ~/Documents/dev/atcoder_testtool/actest_python.sh $1 $2
}

使い方

image.png

テストしたいソースファイルと同じディレクトリにデータファイルを作成します。ここでは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); })();

これをブックマークに登録し…

image.png

問題ページで実行して…

image.png

貼り付けると、

image.png

データファイルができます!

結果

嬉しい!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?