2012-10-09 24 views
5

私は、コマンドライン引数を受け取り、Tic Tac Toeの1ラウンドを実行するPythonスクリプトを書いた。
は動きが合法であるならば、それは、新しいボード・レイアウトを出力し、誰が勝ったかどうか#XO ##、X ##、X 0 1Python、unittest、コマンドライン引数を使ってスクリプトをテストする

oを、それはこのようになります...

実行TTTを実行していますゲーム

私はunittestを使ってテストを書く必要があります。私はいろいろなコマンドラインパラメータでスクリプト全体をテストする方法を知らない。私が見たすべての例は、スクリプト内の個々の関数をテストするようだ。 また、スクリプトでは​​を使用してパラメータを解析します。

ありがとうございました!

+1

[Pythonで単体テストを書く:どうすればよいですか?](http://stackoverflow.com/questions/3371255/writing-unit-tests-in-python-how-do-i-start) –

+0

@Pedro 、ええ、私はそのことを読んでいますが、それはすべてテスト機能に関するものです。コマンドラインパラメータを使ってスクリプト全体をテストすることが可能かどうかは知りませんが、可能ならば誰かが少なくとも言うことができますか? –

+0

これは、あなたが探しているものより多くのものであるかもしれません:[Pythonスクリプトのテスト](http://stackoverflow.com/questions/5974557/testing-python-scripts)。 –

答えて

10

その主なアクション(マイナスargparsing)は「メイン」機能で起こるように、あなたのプログラムをリファクタリング:

def main(args): 
    ... 

if __name__ == '__main__': 
    args = parse_args() 
    main(args) 

次にあなたがmainparse_argsの行動のためのテストを書くことができます。

PS。 subprocessモジュールを使用してプログラムを外部プロセスとして呼び出し、出力を解析することは可能ですが、それは面倒で不必要になると思います。

PPS。このようにプログラムを書くことの利点として、プログラムをモジュールとしてインポートし、他のスクリプトのmain関数を呼び出すことができます。これは、たとえば、いつかGUIを構築したいと考えている場合に便利です。

+0

これは、コマンドラインエンドポイントが1つしかないスクリプト(OPの場合)がある場合に機能します。エンドポイントが複数ある場合は、別の戦略を使用する必要があります。 –

関連する問題