ASISは、HTTP上(ヘッダやコンテンツを含む)そのままドキュメントサービス提供のための軽量のPythonユーティリティです。
それはHTTPリソースをフェッチユニットテストツールに来るとき、私たちは決めた我々は簡単に予め定められた応答を格納するための方法を持っているしたいのですが、私たちはこれらのテストを実行しているように、同じプロセスで、サーバーからそれらを提供。いいえ、サルのパッチ適用しない、(キャッシュプロキシサーバーなど)がないインフラ。
それはあなたの既存のサービスからの要求をキャプチャし、それらを再生するために探している場合には、ビデオデッキのプロジェクトはいくつかの言語に移植され、非常に便利ですされていることを言及すべきである。
のは何ですか?の
ツイストは、Apacheに触発そのまま提供と呼ばれる機能が付属しています。しかし、誰が依存関係としてツイスト含めるようにしたい?
これは、ボトルに基づき、したがって、(ツイストとgevent含む)WSGIバックエンドの数をサポートしており、軽量であることを意味している。文書そのままヘッダおよびHTTPレスポンスのコンテンツの両方が保存されているものである。
HTTP / 1.0 200 OK
コンテンツ長:137
コンテンツタイプ:テキスト/ HTML
&NBSP; <頭>
&NBSP; <タイトル>基本テストページ
&NBSP; の
&NBSP; <身体>
&NBSP;
こんにちは、私はテストページです。
&NBSP;
これはヘッダの改行だけが必要であることに注意してください - キャリッジリターンは、利便性のために自動的に追加されます。
<強い>インストールの
簡単peasy:
sudoのピップASISをインストール
またはソースから好む人のために:
gitのクローンhttps://github.com/seomoz/asis
CD ASIS && sudoのpythonのsetup.pyインストール
の使用法の
あなたは、比較的容易にASISサーバを実行できます。
輸入ASIS
#ポート8080上で「fooは/ 'に保存されたファイルをサーブ
サーバー= asis.Server( 'foo'に、8080)
server.run()
...
server.stop()
あるいは、コンテキストマネージャの形で使用することができる。
輸入ASIS
インポート要求
サーバーとしてasis.Server( 'foo'の)と:
&NBSP; requests.get( 'はhttp:// localhost:8080 / fooに/ bar.asis')
コマンドラインユーティリティは、カールやブラウザを介してこれらのファイルを見るために特に有用であるスタンドアロンサーバーとしてASISファイルを提供するための便宜のためにもあります:
#ポート8080で「fooを/ 'の外にファイルを配信
8080 --port ASIS-サーバーfooの
#同じ、geventを使用し、冗長であること
ASIS-サーバーfooの--port 8080 --server gevent --verbose
の添えものの
あなたはを活用する必要があるかもしれませんいくつかの機能があります:
コンテンツのエンコーディング
あなたはどちらのgzipとしてContent-Encodingヘッダを供給または収縮させる場合は、ファイルに格納されているプレーンな内容が圧縮され、ワイヤ上で、そのように送信されます。これらのケースでは、0としてのContent-Lengthを残すことができ、かつ(圧縮後の)真のコンテンツの長さは、その場所に送信されます。たとえば、次がブラウザに正しくgzipで圧縮されたコンテンツとして送られる。
HTTP / 1.0 200 OK
コンテンツ長:0
コンテンツタイプ:text / plainの
コンテンツエンコード:GZIP
こんにちは世界!
文字セット
あなたのContent-Typeヘッダのcharsetを含める場合は、あなたのコンテンツがディスクにUTF-8として解釈し、次に提供エンコードでエンコードされます。アイデアは、あなたが明示的に宣言された文字セットであなたの例を保存する必要はありませんように、編集処理を支援することです。コンテンツのエンコーディングへの変更と同様に、Content-Lengthヘッダは、変換が完了すると、正しいことが再計算されます。
のモードの
デフォルトでは、サーバーはgeventサーバーで開始され、それがバックグラウンド緑のスレッドで開始し、それはすぐに実行()が返すようなリクエストを処理する準備ができていることになっている。
あるいは、サーバは、2つの他のモード、フォークブロックで開始することができる。フォークなら、それは別のプロセスでサーバーを実行し、それはまだコンテキストマネージャと実行を呼び出した後()の両方として動作します。ブロックが選択される場合、それはブロッキングな方法で実行される。例えば:
#別のプロセスでそれを実行して、
asis.Server( 'foo'に、ポート= 8080、モード= 'フォーク')と:
&NBSP;#いくつかの要求を行う
&NBSP; ...
の例とテストの
文書そのままの多くの例は、ここに含まれるのは、とtest.pyは、それらが正しく転送されていることを確認するために、直接実行することができます:
./test.py
それはまた、あなたのユニットテストにそれを組み込む方法の例を提供します。
の貢献の
ご質問、コメント、アイデアは常に歓迎します。
の要件の:ます。
- のPythonます。
コメントが見つかりません