Testing Files Generator
Français

À quoi les gens l'utilisent

Cinq tâches qui reviennent dans presque tous les projets qui reçoivent des fichiers de la part de personnes, et la commande qui fait chacune. Chaque exemple ci-dessous s'exécute tel qu'il est écrit.

Limites d'envoi

Tester si une limite de taille de fichier est appliquée là où elle le dit

Une limite, ce sont trois cas de test, pas un : juste en dessous, pile dessus et juste au-dessus. Les obtenir à la main revient à calculer des nombres d'octets en espérant ne pas s'être trompé d'un. Demandez plutôt le jeu :

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

Vous obtenez trois vrais PDF de 1048575, 1048576 et 1048577 octets, et un manifeste qui dit que les deux premiers doivent être acceptés et le troisième refusé pour size_limit. Votre test lit l'attente au lieu que vous écriviez trois assertions à la main - et quand la limite change, vous changez un nombre et relancez.

La même chose fonctionne sans préréglage quand vous voulez un seul jeu de limites en ligne :

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

Intégration continue

Garder les fixtures hors du dépôt sans les perdre

De gros fixtures binaires rendent un dépôt lent à cloner et pénible à relire, et personne ne peut dire ce qui a changé quand l'un est remplacé. Une recette, ce sont quelques centaines de caractères de YAML qui reconstruisent les fichiers identiques - à l'octet près, sur n'importe quelle machine - parce que chaque fichier est dérivé de la graine de l'exécution.

- 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

Chaque fin a son propre code de sortie, si bien qu'un pipeline peut distinguer une mauvaise recette d'un disque plein et d'une différence de vérification. Une exécution échouée n'écrit rien sur la sortie standard, ce qui évite qu'un analyseur de journaux lise une erreur comme une donnée.

Volume

Découvrir ce qui se passe quand le dossier est gros

Les routines d'import, les tâches de nuit et les listages de répertoires se comportent autrement à dix mille fichiers qu'à dix. Des tailles tirées dans une plage donnent au jeu l'allure d'un vrai trafic plutôt que de dix mille fichiers identiques, et le tirage vient de la graine, donc le jeu est le même demain.

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

Vérifiez ce que coûterait une exécution avant qu'elle n'écrive quoi que ce soit, ce qui compte quand le total se mesure en gigaoctets :

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

Une exécution plus grande que l'espace libre du disque est refusée avant que le premier octet soit écrit, au lieu de remplir le disque et d'échouer à mi-chemin.

Archives

Tester un décompresseur avec une archive qui contient vraiment des fichiers

Une archive vide avec la bonne extension ne prouve rien sur le code qui l'ouvre et parcourt ce qu'elle contient. Déclarez le contenu et l'archive le contient vraiment :

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

La profondeur d'imbrication, le nombre d'entrées et la taille de ce qu'il y a dedans sont autant de choses sur lesquelles une routine d'import a des opinions, et c'est ainsi que vous découvrez lesquelles.

Analyseurs et visionneuses

Vérifier que votre propre code lit un format comme le fait un vrai logiciel

Chaque format ici est vérifié avec un lecteur indépendant avant la livraison - un PNG est ouvert et ses pixels comparés, un DOCX est relu par des bibliothèques distinctes, une archive est extraite. Cela signifie qu'un fichier que votre analyseur refuse est une trouvaille sur votre analyseur, pas sur le générateur.

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 page des formats liste les réglages que chacun accepte et le plus petit fichier que chacun peut être.

Guides

Deux d'entre eux en détail

À qui cela s'adresse

Les ingénieurs QA, l'automatisation de tests et tous ceux dont le code a derrière lui un formulaire d'envoi, une routine d'import, un analyseur ou un quota de stockage. Il fonctionne sur une machine sans aucun réseau, ce qui compte dans un environnement d'entreprise fermé où un générateur dans le navigateur n'est pas une option.

Gratuit et open source, GPL-3.0. Aucune inscription. Les téléchargements Windows et macOS sont signés et démarrent sans avertissement.