asis adalah utilitas Python ringan untuk melayani As-Is dokumen (berisi header dan konten) melalui HTTP.
Ketika datang ke alat-alat pengujian unit yang mengambil sumber daya HTTP, kami memutuskan kami ingin memiliki cara untuk dengan mudah menyimpan respon yang telah ditentukan, dan kemudian melayani mereka dari server dalam proses yang sama seperti yang kita menjalankan tes ini. Tidak ada monyet patch, tidak ada infrastruktur (seperti server proxy caching).
Perlu disebutkan bahwa jika Anda mencari untuk menangkap permintaan dari layanan yang ada dan kemudian memutar ulang mereka, proyek vcr telah porting ke beberapa bahasa dan sangat berguna.
Apa?
Bengkok dilengkapi dengan fitur yang disebut sebagai-adalah melayani, terinspirasi oleh Apache. Tapi, yang ingin termasuk twisted sebagai ketergantungan?
Hal ini didasarkan pada botol, dan dengan demikian mendukung sejumlah backends WSGI (termasuk twisted dan gevent), dan dimaksudkan untuk menjadi ringan. Sebuah apa adanya dokumen adalah salah satu di mana kedua header dan konten untuk respon HTTP disimpan:
HTTP / 1.0 200 OK
Content-Length: 137
Content-Type: text / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Halo, saya halaman pengujian
& Nbsp;
Catatan bahwa ini hanya membutuhkan baris untuk header - kembali kereta ditambahkan secara otomatis untuk kenyamanan.
Instalasi
Mudah Peasy:
sudo pip menginstal asis
Atau bagi mereka yang lebih dari sumber:
git clone https://github.com/seomoz/asis
cd asis && sudo python setup.py install
Penggunaan
Anda dapat menjalankan server asis relatif mudah:
impor asis
# Sajikan file yang tersimpan dalam 'foo /' pada port 8080
Server = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
Atau, dapat digunakan dalam konteks-manager mode:
impor asis
permintaan impor
dengan asis.Server ('foo') sebagai server:
& Nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
Ada juga sebuah utilitas baris perintah termasuk untuk kemudahan untuk melayani file asis sebagai server mandiri, yang sangat membantu untuk melihat file-file ini melalui ikal atau browser:
# Sajikan file dari 'foo /' pada port 8080
asis server foo --port 8080
# Sama, menggunakan gevent dan menjadi verbose
asis server foo --port 8080 --server gevent --verbose
Bells dan Whistles
Ada beberapa fitur Anda mungkin perlu untuk mengambil keuntungan dari:
Content-Encoding
Jika anda menyertakan Content-Encoding header sebagai salah gzip atau mengempis, isi polos disimpan dalam file yang dikompresi dan dikirim melalui kawat seperti itu. Dalam kasus tersebut, Anda dapat meninggalkan Content-Length sebagai 0, dan panjang konten yang benar (setelah kompresi) akan dikirim di tempatnya. Sebagai contoh, berikut ini akan dikirim sebagai gzip-terkompresi konten dengan benar ke browser:
HTTP / 1.0 200 OK
Content-Length: 0
Content-Type: text / plain
Content-Encoding: gzip
Halo Dunia!
Charset
Jika Anda termasuk charset dalam Content-Type Anda header, maka konten Anda akan ditafsirkan sebagai utf-8 pada disk, dan kemudian dikodekan dalam pengkodean disediakan. Idenya adalah untuk membantu proses editing sehingga Anda tidak perlu secara eksplisit menyimpan contoh di set karakter menyatakan mereka. Seperti perubahan Content-Encoding, header Content-Length adalah menghitung ulang untuk benar sekali transformasi selesai.
Mode
Secara default, server dimulai dengan server gevent, dan itu dimulai di thread hijau latar belakang, dan itu seharusnya siap untuk melayani permintaan secepat run () kembali.
Atau, server dapat dimulai dalam dua mode lainnya, garpu dan blok. Jika garpu, maka akan menjalankan server dalam proses yang terpisah, dan masih bekerja baik sebagai manajer konteks dan setelah memanggil run (). Jika blok dipilih, maka itu berjalan dengan cara memblokir. Sebagai contoh:
# Jalankan dalam proses yang terpisah
dengan asis.Server ('foo', port = 8080, mode = 'fork'):
& Nbsp; # Membuat beberapa permintaan
& Nbsp; ...
Contoh dan Pengujian
Termasuk dalam sini adalah beberapa contoh seperti apa dokumen, dan test.py dapat dijalankan langsung untuk memverifikasi bahwa mereka ditransfer dengan benar:
./test.py
Hal ini juga memberikan contoh bagaimana Anda mungkin memasukkan ke dalam unit test.
Berkontribusi
. Pertanyaan, komentar, ide-ide selalu menyambut
Persyaratan :
- Python
Komentar tidak ditemukan