asis es una utilidad Python ligero para que sirve y como es documento (que contienen encabezados y contenido) a través de HTTP.
Cuando se trata de herramientas de pruebas unitarias que recuperan recursos HTTP, decidimos que nos gustaría tener una manera de almacenar fácilmente respuestas predeterminadas, y luego servirlos desde un servidor en el mismo proceso que nos estamos quedando estas pruebas. No parches mono, sin infraestructura (como un servidor proxy caché).
Cabe mencionar que si usted está mirando para capturar las solicitudes de los servicios existentes y luego reproducirlas, el proyecto vídeo ha sido portado a varios idiomas y es muy útil.
¿Qué es?
Twisted viene con una función llamada en que está sirviendo, inspirado por Apache. Pero, ¿quién quiere como Twisted como una dependencia?
Esto se basa en la botella, por lo que es compatible con varios backends WSGI (incluyendo Twisted y GEvent), y está destinado a ser ligero. Un tal cual documento es uno en el que tanto los encabezados y el contenido de una respuesta HTTP se almacenan:
HTTP / 1.0 200 OK
Content-Length: 137
Content-Type: text / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Hola, soy una página de prueba
& Nbsp;
Tenga en cuenta que esto sólo requiere nuevas líneas para los encabezados - los retornos de carro se añaden automáticamente por conveniencia.
Instalación
Fácil peasy:
sudo pip install asis
O para aquellos que prefieren la de la fuente:
git clone https://github.com/seomoz/asis
cd asis && sudo python setup.py install
Uso
Puede ejecutar un servidor de asis con relativa facilidad:
asis importación
# Servir archivos almacenados en 'foo /' en el puerto 8080
server = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
Alternativamente, se puede utilizar de una manera contexto-manager:
asis importación
solicitudes de importación
con asis.Server ('foo') como servidor:
& Nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
También hay una utilidad de línea de comandos incluidos por conveniencia para servir archivos asis como un servidor independiente, lo que es especialmente útil para ver estos archivos a través de rizo o el navegador:
# Servir archivos de 'foo /' en el puerto 8080
foo asis-servidor --port 8080
# Igual, utilizando GEvent y ser prolijo
foo asis-servidor --port 8080 --server GEvent --verbose
campanas y silbatos
Hay algunas características que pueda necesitar para disfrutar de:
Content-Encoding
Si usted indica el encabezado Content-Encoding ya sea como gzip o desinflar, los contenidos sin formato almacenados en el archivo se comprimen y se envían a través del cable de esa manera. En esos casos, puede dejar Content-Length como 0, y la verdadera longitud del contenido (después de la compresión) se enviará en su lugar. Por ejemplo, el siguiente es enviado como contenido comprimido con gzip correctamente en el navegador:
HTTP / 1.0 200 OK
Content-Length: 0
Content-Type: text / plain
Content-Encoding: gzip
Hola Mundo!
Charset
Si se incluye un juego de caracteres en el encabezado Content-Type, a continuación, su contenido será interpretado como UTF-8 en el disco, y luego codificado en una codificación proporcionada. La idea es ayudar al proceso de edición de modo que usted no tiene que guardar explícitamente sus ejemplos en su conjunto de caracteres declarada. Al igual que los cambios en Content-Encoding, el encabezado Content-Length se recalcula ser correcta una vez que la transformación es completa.
Modos
Por defecto, el servidor se inicia con el servidor GEvent, y se inició en un fondo hilo verde, y se supone que es el momento de servir las peticiones lo antes run () devuelve.
Alternativamente, el servidor se puede iniciar en otros dos modos, tenedor y el bloque. Si tenedor, a continuación, se ejecutará el servidor en un proceso separado, y todavía funciona como un gestor de contexto y después de llamar a run (). Si se selecciona el bloque, entonces se ejecuta en un modo de bloqueo. Por ejemplo:
# Ejecutar en un proceso separado
con asis.Server ('foo', port = 8080, mode = 'tenedor'):
& Nbsp; # Hacer algunas peticiones
& Nbsp; ...
Ejemplos y pruebas
Incluye aquí hay una serie de ejemplos de como está documentos, y test.py se puede ejecutar directamente para verificar que se transfieren correctamente:
./test.py
También proporciona un ejemplo de cómo se puede incorporar en tus pruebas unitarias.
Contribuir
. Preguntas, comentarios, las ideas siempre bienvenidos
Requisitos :
- Python
Comentarios que no se encuentran