Testing Files Generator
Čeština

K čemu to lidé používají

Pět úloh, které se objevují téměř v každém projektu přijímajícím soubory od lidí, a příkaz, který každou provede. Každý příklad níže běží tak, jak je napsán.

Limity nahrávání

Test, zda je limit velikosti souboru vynucován tam, kde se tvrdí

Limit jsou tři testovací případy, ne jeden: těsně pod, přesně na něm a těsně nad. Získat je ručně znamená počítat počty bajtů a doufat, že jste se nespletli o jedna. Požádejte raději o sadu:

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

Dostanete tři skutečná PDF o 1048575, 1048576 a 1048577 bajtech a manifest, který říká, že první dvě mají být přijata a třetí odmítnuto pro size_limit. Váš test čte očekávání místo toho, abyste ručně psali tři aserce - a když se limit změní, změníte jedno číslo a spustíte znovu.

Totéž funguje bez předvolby, když chcete jedinou sadu hranic přímo v příkazu:

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

Průběžná integrace

Držet fixtures mimo repozitář, aniž byste o ně přišli

Velké binární fixtures zpomalují klonování repozitáře a znepříjemňují revizi a nikdo nepozná, co se změnilo, když se jeden vymění. Recept je pár set znaků YAML, které znovu sestaví totožné soubory - bajt po bajtu, na jakémkoli počítači - protože každý soubor je odvozen ze seedu běhu.

- 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

Každý konec má svůj vlastní návratový kód, takže pipeline rozliší špatný recept od plného disku a od nesrovnalosti při ověření. Neúspěšný běh nevypíše na standardní výstup nic, takže parser logu nečte chybu jako data.

Rozsah

Zjistit, co se stane, když je složka velká

Importní rutiny, noční úlohy a výpisy adresářů se chovají při deseti tisících souborů jinak než při deseti. Velikosti losované z rozsahu dělají ze sady něco, co vypadá jako skutečný provoz, a ne deset tisíc stejných souborů, a losování vychází ze seedu, takže sada je zítra stejná.

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

Zkontrolujte, kolik by běh stál, než cokoli zapíše, což záleží, když se součet měří v gigabajtech:

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

Běh větší než volné místo na disku je odmítnut dřív, než se zapíše první bajt, místo aby zaplnil disk a selhal v půlce.

Archivy

Test rozbalovače s archivem, který skutečně obsahuje soubory

Prázdný archiv se správnou příponou nic nedokazuje o kódu, který ho otevírá a prochází, co je uvnitř. Deklarujte obsah a archiv ho skutečně obsahuje:

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

Hloubka vnoření, počet položek a velikost toho, co je uvnitř, jsou věci, o kterých má importní rutina názor, a takto zjistíte, jaké ty názory jsou.

Parsery a prohlížeče

Ověření, že váš vlastní kód čte formát tak, jak to dělá skutečný software

Každý formát zde je před vydáním ověřen nezávislou čtečkou - PNG se otevře a porovnají se jeho pixely, DOCX čtou zpět samostatné knihovny, archiv se rozbalí. To znamená, že soubor, který váš parser odmítne, je zjištění o vašem parseru, ne o generátoru.

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

Stránka formátů uvádí nastavení, která každý formát přijímá, a nejmenší soubor, jakým každý může být.

Návody

Dva z nich podrobněji

Pro koho to je

QA inženýry, automatizaci testů a každého, za jehož kódem stojí formulář pro nahrávání, importní rutina, parser nebo kvóta úložiště. Běží na počítači bez jakékoli sítě, na čem záleží v uzavřeném firemním prostředí, kde generátor v prohlížeči není možnost.

Zdarma a open source, GPL-3.0. Žádná registrace. Stažené soubory pro Windows a macOS jsou podepsané a spustí se bez varování.