Saltar a contenido

Referencia

API pública

generate_http_request_code

from http_request_codegen import generate_http_request_code

Genera un trozo de código de una petición HTTP para una biblioteca de un lenguaje de programación dado o una interfaz de línea de comandos de un programa, basado en un método HTTP válido y una especificación de parámetros.

Hay algunas peculiaridades concernientes a ciertos métodos:

POST

La mayoría de implementaciones de métodos POST renderizan sus trozos de código diferente, dependiendo del encabezado Content-Types, incluyendo por defecto algunos de los comportamientos según dicho encabezado más usados:

  • El comportamiento por defecto, incluso si no lo especificas explícitamente en el encabezado Content-Type es la generación de una petición codificada como application/x-www-form-urlencoded.
  • Si quieres generar una petición codificada como multipart/form-data, necesitas especificar los archivos a enviar usando el argumento files.
  • Si especificas el encabezado Content-Type application/json, los parámetros enviados serán ajustados de acuerdo a la petición POST codificada como JSON.
  • Si especificas el encabezado Content-Type text/plain, sólo puedes enviar un parámetro y será ajustado de acordemente siguiendo la implementación.

Parameters:

Name Type Description Default
language str

Lenguaje de programación o plataforma del trozo de código resultante. Ver Soporte para comprobar las plataformas y lenguajes de programación soportados.

None
impl str

Tipo de implementación usada para el trozo de código. Puede ser una biblioteca, un programa o la API de un lenguaje. Ver Soporte para comprobar las implementaciones soportadas por lenguaje.

None
method str

Método HTTP de la petición generada.

'GET'
url str, iterable, callable

Endpoint URL de la petición generada.

  • Definido como una cadena, la url será la cadena misma.
  • Definido como un iterable, la url será seleccionada aleatoriamente del iterable. Soporta recursividad: hasta que una cadena no se seleccione la recursión no se detendrá.
  • Definido como un invocable, la url será el valor retornado por el invocable. Soporta recursividad: hasta que una cadena no se seleccione la recursión no se detendrá.
'http://localhost'
headers dict

Mapeo de nombres y valores de encabezados.

{}
parameters list

Lista de parámetros para la petición. Cada parámetro debe ser un diccionario. Este diccionario define, para cada parámetro, cual es el nombre del parámetro y como son generados los valores del parámetro:

  • name (str, list, function): Nombre del parámetro. Al menos este el atributo names son requeridos.

    • Definido como una cadena, el nombre será la cadena misma.
    • Definido como un iterable, el nombre será seleccionado aleatoriamente del iterable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
    • Definido como un invocable, el nombre será el valor retornado por el invocable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
  • names (str, list, function): Nombre del parámetro. Al menos este o el atributo name son requeridos.

    • Definido como un iterable, el nombre será seleccionado aleatoriamente del iterable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
    • Definido como una cadena, debe ser un módulo de Python formateado como una ruta siguiendo el formato 'ruta.al.modulo::nombre_de_funcion' y el nombre retornado será usado como el nombre para el parámetro, lo que es útil si elegir un valor aleatorio de una lista no se ajusta a tus necesidades.
    • Definido como un invocable, el nombre será el valor retornado por el invocable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
  • type (str, iterable, callable): Tipo de dato del parámetro. Si no se define y value, values y faker tampoco lo son, será considerada como una cadena y el valor del parámetro será una palabra aleatoria construida usando la biblioteca faker. Para algunos tipos, otros atributos están soportados dentro del diccionario de parámetros, documentados si es así en cada tipo. Los siguientes tipos de parámetros según el tipo de dato están soportados como atributos de diccionarios de parámetros, así como sus correspondientes nombres en letras mayúsculas:

    • 'str': Tipo básico de cadena. Puede ser definido con el tipo integrado en Python str o las cadenas 'str' y 'string'.
    • 'int': Tipo entero básico. Puede ser definido con el tipo integrado en Python int o las cadenas 'int' e 'integer'. Por defecto, será un entero en el rango -65536 a 65536. Los valores mínimos y máximos posibles pueden ser definidos con los atributos opcionales min y max.
    • 'float': Tipo de número decimal. Puede ser definido con el tipo de dato integrado en Python float o las cadenas 'float' y number. Por defecto será en el rango -65536 to 65536. Los valores máximos y mínimos posibles pueden ser definidos con los atributos de parámetro opcionales min y max y pueden ser redondeados con la función integrada en Python round usando el atributo round.
    • 'bool': Tipo básico booleano. Puede ser definido con el tipo de dato integrado en Python bool o las cadenas 'bool' y 'boolean'. Retorna como valor del parámetro una de las cadenas 'true' o 'false'. Si pasas el atributo de parámetro opcional null como True, la cadena 'null' también puede ser retornada.
    • 'uuid': Tipo de identificador único. Puede ser definido con el tipo Python uuid.UUID o las cadenas 'uuid' y 'uuid4'. Es un identificador único v4 codificado como una cadena hexadecimal.
    • 'id': Básico identificador como clave primaria. Es un entero positivo en el rango 1 a 65536. El valor máximo puede ser definido por el atributo opcional max.
    • 'random': Tipo aleatorio entre todos los tipos disponibles. Puedes definir una serie de tipos posibles pasando un iterable al atributo opcional de parámetro types.

    Definido como un iterable o invocable, el tipo será seleccionado aleatoriamente desde el iterable, o el valor retornado desde el invocable será usado. Esto te permite seleccionar un tipo aleatorio de una lista de tipos predefinidos.

  • value (str, iterable, callable): Valor del parámetro. Si no está definido y type, values y faker tampoco lo están, el valor del parámetro será una palabra aleatoria construída usando la biblioteca faker.

    • Definido como una cadena, el valor será la cadena misma.
    • Definido como un iterable, el valor será seleccionado aleatoriamente del iterable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
    • Definido como un invocable, el valor será retornado del invocable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
  • values (list, iterable, callable): Posibles valores para el parámetro.

    • Definido como un iterable, el valor será seleccionado aleatoriamente del iterable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
    • Definido como una cadena, debe ser un módulo de Python formateado como una ruta de módulo siguiendo el formato 'ruta.al.modulo::nombre_de_funcion' y el valor retornado será usado como el valor para el parámetro, lo cual es útil si elegir un valor aleatorio de una lista no se ajusta a tus necesidades.
    • Definido como un invocable, el valor será retornado del invocable. Soporta recursividad: si una cadena no es seleccionada la recursión no se detendrá.
  • faker (str, function): Ruta a módulo formateada al estilo Python hacia una función de un proveedor Faker usado para construir el valor aleatorio. Puede ser un proveedor estándar, externo o cualquier función, pero si no es un proveedor, seed y locale no tendrán efecto.

    • Definido como una cadena debe seguir el formato 'path.to.provider.module::function'.
[]
files dict

Mapeado de archivos a enviar a la URL. Sólo tiene efecto para métodos POST. Si defines este argumento, el encabezado Content-Type de la petición será asumido como 'multipart/form-data', pero sólo será explícitamente especificado en el código generado si la implementación lo necesita. Cada valor acepta una cadena, None o una tupla:

  • Definido como una cadena, debe ser la ruta al archivo a enviar.
  • Definido como None, la ruta al archivo será aleatoria usando la función faker.providers.file::file_path.
  • Definido como una tupla, el primer valor debe ser la ruta del archivo a enviar (si es None será aleatoria), el segundo valor el tipo de contenido del archivo y el tercer valor un diccionario de encabezados personalizados para el archivo.
{}
wrap int

Ancho máximo del trozo de código generado. Si se excede, el código renderizado será convenientemente formateado en múltiples líneas.

80
indent str

Cadena de indentación usada en el código generado. Si no se define se usará la cadena de indentación más comúnmente usada para la implementación.

None
quote_char str

Caracter de puntuación para cadenas usados en el código generado.

"'"
setup bool, str

Si es True, incluye el código necesitado por una implementación para realizar la petición. Podrían ser importaciones de módulos adicionales o inicialización de objetos, dependiendo de la implementación. Puedes personalizar este trozo pasando una cadena con el trózo de código que quieres incluir.

None
teardown str

Trozo de código a incluir después del código de la petición HTTP.

None
oneline bool

Renderiza el código en sólo una línea.

False
seed int

Semilla usada generando valores aleatorios falsos de parámetros. Útil si quieres generar el mismo conjunto de valores entre diferentes trozos de código.

None
locale str

Local usada por la biblioteca faker para localizar los valores aleatorios falsos para los parámetros.

None

Exceptions:

Type Description
ValueError

Valor no es un valor válido en su contexto.

TypeError

Valores no concuerdan con los tipos soportados para ellos.

ImportError

Función-modulo de Python especificada no puede ser importada con éxito.

Returns:

Type Description
str

Trozo de código de petición HTTP.

generate_http_request_md_fenced_code_block

from http_request_codegen import generate_http_request_md_fenced_code_block

Envuelve la función generate_http_request_code en un bloque de código Markdown.

Parameters:

Name Type Description Default
fence_string str

Cadena de caracteres que delimita el inicio y el final del bloque de cógido. No realiza ninguna comprobación sobre si la cadena es válida.

'```'
**kwargs

Todos los otros argumentos opcionales son pasados a la función generate_http_request_code.

{}

Examples:

>>> generate_http_request_md_fenced_code_block(setup=False)
"```python\nreq = requests.get('http://localhost')\n```"
>>> generate_http_request_md_fenced_code_block(fence_string='~~~',
...                                            setup=False)
"~~~python\nreq = requests.get('http://localhost')\n~~~"

Returns:

Type Description
str

Bloque de código Markdown con el trózo de código de la petición dentro.

lazy_name_by_parameter

from http_request_codegen import lazy_name_by_parameter

Dado un diccionario de opciones de parámetros, retorna el nombre de parámetro correspondiente construido siguiendo las reglas listadas en la documentación del argumento parameters de la función generate_http_request_code.

La estrategia de construcción de nombre es comprobar los siguientes atributos en el orden dado:

  • name
  • names

Puedes usar esta función para construir los parámetros a un nivel más bajo. Esto puede ser usado, por ejemplo, para añadir los parámetros a una URL generando códigos de métodos GET si una implementación los añade como argumentos de una función.

Parameters:

Name Type Description Default
parameter_data dict

Datos de especificación de parámetro. Estan definidos en las secciones name y names de la documentación de la función generate_http_request_code.

required
seed int

Semilla usada aleatorizando nombres.

None

Exceptions:

Type Description
ValueError

ninguno de los atributos name o name están definidos dentro del diccionario parameter_data.

Examples:

>>> lazy_name_by_parameter({'name': 'foo'})
'foo'
>>> result = lazy_name_by_parameter({'names': ['foo', 'bar', 'baz']})
>>> result in ['foo', 'bar', 'baz']
True

Returns:

Type Description
str

Nombre de parámetro.

lazy_value_by_parameter

from http_request_codegen import lazy_value_by_parameter

Dado un diccionario de opciones de parámetros, retorna el valor correspondiente construido siguiendo las reglas listadas en el argumento parametros de la documentación de la función generate_http_request_code.

Por ejemplo, dado {'type': int} como entrada, la salida será un número aleatorio como cadena.

La estrategia de construcción del valor es comprobar los siguientes atributos en el orden dado:

  • value
  • 'values'
  • 'faker'
  • 'type'

Si no se pasan ninguno de los atributos previos será tratado como si se hubiera pasado {'type': str}, retornando una palabra aleatoria.

Puedes usar esta función para construir los parámetros a un nivel más bajo. Esto puede ser usado, por ejemplo, para añadir los parámetros a una URL generando códigos de métodos GET si una implementación los añade como argumentos de una función.

Parameters:

Name Type Description Default
parameter_data dict

Datos de especificación de parámetro. Están definidos en las secciones type, value, values y faker del argumento parameters en la documentación de la función generate_http_request_code.

required
seed int

Semilla usada aleatorizando valores.

None
locale str

Local usada por los proveedores de faker.

None

Examples:

>>> lazy_value_by_parameter({'value': 'foo'})
'foo'
>>> result = lazy_value_by_parameter({'values': ['foo', 'bar', 'baz']})
>>> result in ['foo', 'bar', 'baz']
True
>>> result = lazy_value_by_parameter({'type': 'int'})
>>> result.replace('.', '', 1).lstrip('-').isnumeric() and \
...     isinstance(result, str)
True

Exceptions:

Type Description
ImportError

el atributo values apunta a un objeto de Python inexsistente.

TypeError

el valor del atributo 'faker' no contiene una cadena o un objeto de Python invocable, o si el atributo 'type' no soporta el tipo definido.

ImportError

valor del atributo faker, cuando es pasada como cadena, apunta un objeto de Python inexistente.

Returns:

Type Description
str

Valor de parámetro.