私は、大規模なPythonベースのApp Engineプロジェクトに着手しようとしています。ユニットテスト戦略を実行する前に、Stack Overflowの "群衆の知恵"をチェックする必要があります。私は、使用したい既存のユニットテストフレームワーク(unittestにカスタムランナーと拡張機能を使用)を使用していますので、nose、webtest、またはgaeunitのような "重い"/"介入"のようなものは適切ではないようです。私の世界観における重要な単体テストは非常に軽量で速いもので、非常に短時間で実行されるので、私は開発リズムを崩さずに何度も繰り返し実行することができます(例えば、別のプロジェクトでは典型的な走行のために5〜7秒、経過時間を要した数十回の超高速試験を伴う20Kラインプロジェクトでは97%ほどのカバレッジがあります。これは、テスト)。もちろん、セレンや風車との統合テストに至るまで、より豊富な/より重いテストもあります。ではありません。私はこの質問(と私の大部分の私の焦点開発の努力;-)は、軽くて素早く自分のコードをカバーする、小さく軽いユニットテストです。App Engineでの軽量Pythonユニットテストにどのようなアプローチを使用しましたか?
私は、データストア、memcache、リクエスト/レスポンスオブジェクト、webappハンドラ、ユーザ処理、メール、&などのさまざまな主要なApp Engineサブシステムの基本的な小型軽量シミュレーションのセットを考えています。 c、おおよそこの優先順位の順です。私が探しているものを正確に見つけられなかったので、私は過去にしばしばやったように、moxに頼るべきです。これは、基本的に、特定のテストで使用された各サブシステムを嘲笑してセットアップすることを意味しますすべての期待& c(たいていは大変な作業ですが、テストコードの内部構造に非常に敏感です、つまり非常に「ホワイトボックス」y)、または各サブシステムの独自のシミュレーションをローリングします(そしてシミュレートされたサブシステムユニットテストの一部としての状態)。 GAEのPython側の強力な「スタブ」アーキテクチャを考えれば、レイターは実現可能なようですが、私は自分自身をロールバックする必要があるとは思えません。つまり、誰も既にそのようなシンプルなシミュレータを書いているわけではありません!私が必要とするのは、SDKにすでに含まれている「データストア上のファイル」スタブであり、データストアの状態に関するアサーションのために読み取り専用で使いやすいアクセサをマークする方法です。サブシステムごとのサブシステム - 既存の「スタブ」アーキテクチャの「上に位置する」SDKに既に含まれているものよりも「ちょっとだけ」が必要なようです。
ユニットテストのためのGAEサブシステムのシミュレーションを「自分自身で実行する」貴重な開発時間の1日か2日を費やして過ごす前に、私はSO人の観客をもう一度チェックし、これを考えてみてください。あるいは、もし私が単純に再利用できる(または最小限に微調整することができ、私の検索で見つけられなかった)シミュレータの既存のオープンソースセットがすでに存在するなら -
を編集してください:私が自分自身をロールすると、実行可能であれば、SDK提供のスタブを活用する予定です。たとえば、最初にファイルから読み込まれた後に最後には保存されないデータストアのスタブがないため、既存のものをサブクラス化して調整する必要があります(これは、特に便利な方法を提供しません)。状態 - メールサービススタブなどと同じ)。 !それは私が「自分をロール」によって何を意味するかだ - 「ゼロからの書き換え」ではない - )
編集:「なぜGAEUnitない」 - GAEUnitは独自のユースケースのための素晴らしいですが、dev_appserverを実行していると見て私のブラウザ(またはurllib経由でさえ)になります。urlopen)は私が後にしたことではありません - 私は、ユニットテストを拡張することに基づいた既存のテスト実行フレームワーク内で実行するのに適した完全自動化セットアップを使用したいと思います。私たちはこれらをシミュレートしたり模擬しているので、gaeunitを使って "中"のテストよりもうまくいくわけではありません。+それぞれのデータストアをあらかじめ用意しておくのは便利な方法ではありませんテスト(そして、物をカスタマイズするのに役立つOO構造はありません)。
2014年に群衆の意見は何ですか? – andruso
@andrusr、私は長年にわたって 'google.appengine.ext.testbed'をうまく使ってきました。 –