ASIS este un utilitar Python ușor pentru servire As-Is documente (conținând antetele și de conținut) prin HTTP.
Când vine vorba de instrumente de unitate de testare care preluați resurse HTTP, am decis am dori să aibă o modalitate de a stoca cu ușurință răspunsuri prestabilite, iar apoi le servi de la un server în același proces ca și mai avem aceste teste. Nu patching maimuță, o infrastructură (cum ar fi un server proxy caching).
Trebuie menționat faptul că, dacă sunteți în căutarea de a captura cereri de la serviciile existente și apoi le reda, proiectul VCR a fost adaptată pentru mai multe limbi și este foarte util.
Ce este?
Twisted vine cu o facilitate numită ca-este servire, inspirat de Apache. Dar, cine vrea să includ Twisted ca un dependență?
Aceasta se bazează pe sticlă, și, astfel, suportă un număr de backend WSGI (inclusiv Twisted și gevent), și este menit să fie ușor. O astfel cum-este documentul este unul în care sunt stocate atât antetul și conținutul unui răspuns HTTP:
HTTP / 1.0 200 OK
Content-Length: 137
Content-Type: text / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Bună ziua, eu sunt o pagină de test
& Nbsp;
Rețineți că acest lucru necesită doar liniile noi pentru antetele - se întoarce de transport sunt adăugate automat pentru confort.
Instalare
Easy peasy:
sudo Pip instala ASIS
Sau pentru cei care prefera din sursa:
git clona https://github.com/seomoz/asis
cd ASIS && sudo python setup.py instala
Utilizare
Puteți rula un server de asis relativ ușor:
ASIS import
# Serviti fișierele stocate în "foo / 'pe portul 8080
serverul = asis.Server ('foo ", 8080)
server.run ()
...
server.stop ()
Alternativ, poate fi utilizat într-o manieră context-manager:
ASIS import
cereri de import
cu asis.Server ("foo") ca server:
& Nbsp; requests.get ("http: // localhost: 8080 / foo / bar.asis")
Există, de asemenea, un utilitar de linie de comandă inclus pentru comfortul pentru a servi fișiere ASIS ca un server independent, care este deosebit de util pentru a vedea aceste fișiere prin buclă sau browser-ul:
# Servi fișierele din "foo / 'pe portul 8080
ASIS-server foo --port 8080
# La fel, folosind gevent și fiind detaliată
ASIS-server bla --port 8080 --Anunturi gevent --verbose
clopote și fluiere
Există câteva caracteristici ar putea fi necesar pentru a profita de:
Content-Encoding
Dacă furnizeze antetul codifică Content fie ca gzip sau dezumfla, conținutul de câmpie stocate în fișierul sunt comprimate și trimise pe sârmă în acest fel. În aceste cazuri, puteți lăsa Content-Length ca 0, și adevărata lungimea continut (după compresie) va fi trimis în locul său. De exemplu, următoarele este trimis ca un conținut comprimat, gzip corect la browser-ul:
HTTP / 1.0 200 OK
Content-Length: 0
Content-Type: text / plain
Content-Encoding: gzip
Salut Lume!
De caractere
Dacă includeți un set de caractere în afara ta Content-Type, atunci conținutul dvs. va fi interpretată ca UTF-8 pe disc, iar apoi codificat în codificarea oferit. Ideea este de a ajuta procesul de editare, astfel încât nu trebuie să salvați în mod explicit exemple dvs. în setul lor de caractere declarat. Ca modificări Content-Encoding, Content-Length antetul este recalculat pentru a fi corect odată transformarea este completă.
Moduri
În mod implicit, serverul este pornit cu serverul gevent, și este început într-un fir verde fundal, și ar trebui să fie gata de a servi cererile de îndată ce centrare () întoarce.
Alternativ, serverul poate fi pornit în alte două moduri de furcă și bloc. În cazul în care furculiță, apoi se va rula serverul într-un proces separat, și încă mai funcționează atât ca un manager de context și după apel run (). Dacă este selectat bloc, apoi se ruleaza intr-un mod de blocare. De exemplu:
# Se Pornește într-un proces separat
cu asis.Server ('foo', port = 8080, modul = 'furcă'):
& Nbsp; # Fă-ți cereri
& Nbsp; ...
Exemple și Teste
Incluse în aici sunt o serie de exemple de cum-este documente, și test.py poate fi rulat direct pentru a verifica dacă acestea sunt transferate corect:
./test.py
Acesta oferă, de asemenea, un exemplu de cum s-ar putea integra în testele unitare.
contribuabil
. Întrebările, comentariile, ideile binevenite întotdeauna
Cerințe :
- Python
Comentariile nu a fost găsit