2

Python で記述されたツールのエンド ツー エンド テストを作成しています。ツールはファイルを入力として読み取ります。その終了コードとその出力をテストしたいと思います。

これはかなり一般的なイディオムであり、いくつかの方法で行われているのを見てきました。PHP プロジェクトでは、各テストはファイルでありINPUT:EXPECTED:EXPECTED_REGEX:、 などの行があります。私自身のphcプロジェクトでは、各ファイルは通常のソース ファイルですが、先頭にコメントが追加され、 などのキーワードが含まれていますEXPECTED。私は、tcl で書かれたはるかに複雑なツールを使用するgccからコピーしたと思います。

Pythonでこれを行うフレームワーク、ライブラリなどはありますか? そうすべき:

  • ソースファイルを読む
  • 予想される出力、終了コード、検出されるまたは検出されないことが予想される単語/正規表現に対応する特別なキーワード (または類似の) を解析します。
  • 出力が正しいことを確認します。

理論的には難しいようには見えませんが、以前にこれを実装したときに多くのエッジケース (特にエスケープを含む) を思い出すので、車輪を再発明したくありません。

4

3 に答える 3

3

ロボット フレームワークが役立つ場合があります。これは、Python で実装されたキーワード駆動の機能テスト ツールであり、pythion または Java で拡張できます。

参照: http://robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html

ファイルなどを操作するための OperatingSystem ライブラリや、文字列を操作するための Strings ライブラリなど、問題を解決するために適用できる組み込みライブラリが多数あります。

http://robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html#standard-libraries

于 2010-11-08T10:52:37.740 に答える
1

IanBickingによるhttp://pythonpaste.org/scripttest/ライブラリもあります。

于 2010-12-25T13:01:54.360 に答える
0

ファイル io の実装はシステムに依存するため、StringIO を使用してファイルの読み取りと書き込みをモックアウトしてみませんか。

http://docs.python.org/library/stringio.html

次に、Pythonでロジックの大部分(ファイルからの読み取り、何らかの処理、ファイルへの書き込み)をテストしますか?

次に、モジュールを使用して別の python ファイルをスクリプトにcommands呼び出すか、別のプロセスとして呼び出している場合に同様のものを使用することにより、基本的な健全性をエンドツーエンドでテストすることができます。

http://docs.python.org/library/commands.html

それを使用すると、出力とステータスの両方を取得できます。

于 2010-11-08T03:36:50.930 に答える