Testing Files Generator
Español

Para qué lo usa la gente

Cinco tareas que aparecen en casi todos los proyectos que aceptan archivos de personas, y el comando que hace cada una. Cada ejemplo de abajo se ejecuta tal como está escrito.

Límites de subida

Probar si un límite de tamaño de archivo se aplica donde dice que se aplica

Un límite son tres casos de prueba, no uno: justo por debajo, exactamente en él y justo por encima. Conseguirlos a mano significa calcular números de bytes y esperar no haberte equivocado en uno. Pide el conjunto en su lugar:

tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges

Obtienes tres PDF reales de 1048575, 1048576 y 1048577 bytes, y un manifiesto que dice que los dos primeros deben aceptarse y el tercero rechazarse por size_limit. Tu prueba lee la expectativa en lugar de que escribas tres aserciones a mano - y cuando cambia el límite, cambias un número y vuelves a ejecutar.

Lo mismo funciona sin preset cuando quieres un único conjunto de límites en línea:

tfg generate --format png --boundary 5mb --out ./png-edges

Integración continua

Mantener los fixtures fuera del repositorio sin perderlos

Los fixtures binarios grandes hacen lento clonar un repositorio y incómodo revisarlo, y nadie puede decir qué cambió cuando se sustituye uno. Una receta son unos cientos de caracteres de YAML que reconstruyen los archivos idénticos - byte a byte, en cualquier máquina - porque cada archivo se deriva de la semilla de la ejecución.

- name: build the fixtures
  run: tfg generate fixtures.yaml --out ./fixtures

- name: run the tests
  run: pytest tests/

- name: nothing moved
  run: tfg verify ./fixtures/manifest.json

Cada final tiene su propio código de salida, así que una canalización puede distinguir una receta mala de un disco lleno y de una discrepancia de verificación. Una ejecución fallida no imprime nada en la salida estándar, lo que evita que un analizador de registros lea un error como datos.

Escala

Descubrir qué pasa cuando la carpeta es grande

Las rutinas de importación, los trabajos nocturnos y los listados de directorios se comportan distinto con diez mil archivos que con diez. Los tamaños sacados de un intervalo hacen que el conjunto parezca tráfico real en lugar de diez mil archivos idénticos, y el sorteo viene de la semilla, así que el conjunto es el mismo mañana.

tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./fixtures

Comprueba cuánto costaría una ejecución antes de que escriba nada, lo que importa cuando el total se mide en gigabytes:

tfg generate --format log --size-range 1kb-8kb --count 10000 --dry-run

Una ejecución mayor que el espacio libre del disco se rechaza antes de escribir el primer byte, en lugar de llenar el disco y fallar a medias.

Archivos comprimidos

Probar un descompresor con un archivo comprimido que de verdad contiene archivos

Un archivo comprimido vacío con la extensión correcta no demuestra nada sobre el código que lo abre y recorre lo que hay dentro. Declara el contenido y el archivo comprimido lo contiene de verdad:

targets:
  - id: bundle
    format: zip
    contains:
      - format: txt
        count: 200
        size: 4kb

La profundidad de anidamiento, el número de entradas y el tamaño de lo que hay dentro son cosas sobre las que una rutina de importación tiene opiniones, y así descubres cuáles son.

Analizadores y visores

Comprobar que tu propio código lee un formato como lo hace el software real

Cada formato de aquí se comprueba con un lector independiente antes de publicarse - un PNG se abre y se comparan sus píxeles, un DOCX lo vuelven a leer bibliotecas distintas, un archivo comprimido se extrae. Eso significa que un archivo que tu analizador rechaza es un hallazgo sobre tu analizador, no sobre el generador.

tfg generate --format docx --size 300kb --set paragraphs=120 --out ./documents
tfg generate --format xlsx --size 2mb --set rows=400 --set columns=6 --out ./sheets

La página de formatos lista los ajustes que admite cada uno y el archivo más pequeño que puede ser cada uno.

Guías

Dos de ellos con más detalle

Para quién es

Ingenieros de QA, automatización de pruebas y cualquiera cuyo código tenga detrás un formulario de subida, una rutina de importación, un analizador o una cuota de almacenamiento. Funciona en una máquina sin red alguna, lo que importa en un entorno corporativo cerrado donde un generador basado en navegador no es una opción.

Gratuito y de código abierto, GPL-3.0. Sin registro. Las descargas de Windows y macOS están firmadas y se inician sin advertencias.