Inicio>Relacionado con la programación>Otro código fuente

Mimicker es un servidor HTTP HTTP de Python inspirado en Wiremock, diseñado para simplificar el proceso de los puntos finales HTTP de retroceso y burla para fines de prueba. Mimicker no requiere bibliotecas de terceros y es liviano, lo que lo hace ideal para pruebas de integración, desarrollo local y entornos de CI.

Características

Instalación

Mimicker se puede instalar directamente desde PYPI usando PIP o poesía:

Usando PIP:

pip install mimicker

Usando poesía:

poetry add mimicker

Uso

Para comenzar a Mimicker en un puerto específico con un punto final simple, puede usar el siguiente fragmento de código:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/hello" ).
    body ({ "message" : "Hello, World!" }).
    status ( 200 )
)

Ejemplos

Usando parámetros de ruta

Mimicker puede manejar los parámetros de ruta dinámicamente. Así es como puede burlarse de un punto final con una variable en la ruta:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/hello/{name}" )
    . body ({ "message" : "Hello, {name}!" })
    . status ( 200 )
)

# When the client sends a request to /hello/world, the response will be:
# {"message": "Hello, world!"} 

Usando encabezados

También puede burlarse de las respuestas con encabezados personalizados:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/hello" )
    . body ( "Hello with headers" )
    . headers ([( "Content-Type" , "text/plain" ), ( "Custom-Header" , "Value" )])
    . status ( 200 )
)

# The response will include custom headers 

Múltiples rutas

Mimicker le permite definir múltiples rutas para diferentes métodos y rutas HTTP. Aquí hay un ejemplo con las rutas GET and POST :

 from mimicker . mimicker import mimicker , get , post

mimicker ( 8080 ). routes (
    get ( "/greet" )
    . body ({ "message" : "Hello, world!" })
    . status ( 200 ),

    post ( "/submit" )
    . body ({ "result" : "Submission received" })
    . status ( 201 )
)

# Now the server responds to:
# GET /greet -> {"message": "Hello, world!"}
# POST /submit -> {"result": "Submission received"} 

Manejo de diferentes códigos de estado

También puede burlarse de diferentes códigos de estado HTTP para el mismo punto final:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/status" )
    . body ({ "message" : "Success" })
    . status ( 200 ),

    get ( "/error" )
    . body ({ "message" : "Not Found" })
    . status ( 404 )
)

# GET /status -> {"message": "Success"} with status 200
# GET /error -> {"message": "Not Found"} with status 404 

Burlarse de las respuestas con el cuerpo JSON

Mimicker es compatible con los cuerpos JSON, lo que lo hace ideal para las pruebas de API:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/json" )
    . body ({ "message" : "Hello, JSON!" })
    . status ( 200 )
)

# The response will be: {"message": "Hello, JSON!"} 

Admitiendo otros tipos de cuerpo (texto, archivos, etc.)

Además de los cuerpos JSON, Mimicker admite otros tipos de contenido para el cuerpo de respuesta. Así es como puede devolver el contenido de texto o archivo:

Respuesta del texto:
 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/text" )
    . body ( "This is a plain text response" )
    . status ( 200 )
)

# The response will be plain text: "This is a plain text response" 

Respuesta del archivo:

También puede devolver archivos desde un punto final simulado:

 from mimicker . mimicker import mimicker , get

mimicker ( 8080 ). routes (
    get ( "/file" )
    . body ( open ( "example.txt" , "rb" ). read ())  # Mock a file response
    . status ( 200 )
)

# The response will be the content of the "example.txt" file 

Características disponibles:

Requisitos

Mimicker es compatible con Python 3.7 y más.

Licencia

Mimicker es liberado bajo la licencia MIT. Consulte la licencia para obtener más información.

Expandir
Información adicional