Testing Files Generator
Українська

Створюйте справжні тестові файли точного розміру

PDF, PNG, DOCX, ZIP - усього 26 форматів, і кожен із них - справжній файл, що відкривається у своїй програмі, точно того розміру, який ви запросили. Кожен запуск ще й записує, що ваш застосунок має робити з кожним файлом. Командний рядок і десктопне вікно, безкоштовно та з відкритим кодом, усе працює на вашій машині.

Безкоштовно, відкритий код, GPL-3.0. Без реєстрації. Збірки для Windows і macOS підписані та запускаються без попереджень.

Десктопне вікно Testing Files Generator, підготовлене до запису партії тестових файлів
Десктопне вікно, підготовлене до запису партії файлів. За командним рядком працює той самий рушій.

Проблема

Зробити один тестовий файл легко. Зробити потрібну тисячу - ось виснажлива частина

Ви тестуєте програму, що приймає файли від людей. Рано чи пізно вам знадобляться:

Саме це він замінює. Він створений для QA-інженерів, автоматизації тестування та всіх, за чиїм кодом стоїть форма завантаження, процедура імпорту, парсер чи квота сховища.

Чим він відрізняється

Інші генератори зупиняються на байтах. Цей відповідає на те, про що насправді питає ваш тест

Тека з файлами все одно залишає вам вирішувати, що має доводити кожен із них. Кожен запуск тут записує поряд із файлами manifest.json - простий перелік усього створеного та для кожного запису заявлене очікування.

Припустімо, ваша точка завантаження допускає 1 МБ. Запросіть три файли, що лежать на цій межі:

tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
ФайлБайтівВаша система маєТому що
1mb_under_1b.pdf1048575прийнятивін у межах ліміту
1mb_at_limit.pdf1048576прийнятисам ліміт дозволений
1mb_over_1b.pdf1048577відхилитиsize_limit

Три файли, три різні відповіді, у машиночитному вигляді. Ваш тест читає маніфест замість того, щоб ви писали перевірки вручну:

import json, os

directory = "edges"
manifest = json.load(open(os.path.join(directory, "manifest.json")))

for entry in manifest["files"]:
    response = upload(os.path.join(directory, entry["path"]))
    outcome = entry["expected"]["outcome"]
    if outcome == "accept":
        assert response.ok, entry["path"]
    elif outcome == "reject":
        assert not response.ok, entry["path"]

Там, де відповідь залежить від вашої власної політики, маніфест так і каже

Він записує unspecified, а не вигадує очікування. Генератор, що вгадує, дає хибні збої, а набір тестів, що кричить «вовки», зрештою вимикають.

Пресети

Виберіть питання, отримайте весь набір

Пресет - це набір тестових файлів, продуманий навколо одного тестового питання, щоб вам не довелося з'ясовувати, які файли що доводять. Кожен має сторінку про те, що він зазвичай знаходить, що входить у набір і які налаштування приймає.

Усі пресети та як вони пов'язані з рецептами

Швидкий старт

Три команди, щоб побачити роботу

  1. Створіть файл

    Один PNG, рівно два мегабайти:

    tfg generate --format png --size 2mb --out ./fixtures
  2. Створіть багато файлів

    Десять тисяч файлів журналу, кожен від одного до восьми кілобайтів, з розмірами з seed, щоб завтра вийшов той самий набір. Давайте кожному запуску власний каталог - маніфест лишається єдиним записом про те, що записав запуск, тому інструмент відмовляється записувати другий поверх нього:

    tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs
  3. Перевірте їх, потім видаліть

    verify повідомляє, що нічого не зсунулося. cleanup видаляє рівно те, що було записано, і нічого більше:

    tfg verify ./logs/manifest.json
    tfg cleanup ./logs/manifest.json --yes

Розміри рахуються по 1024, як у вашому файловому менеджері, тому 2mb означає 2097152 байти. Підійде й просте число байтів. Документація охоплює рецепти, маніфест і коди завершення.

Що ви отримуєте

Створений для набору тестів, що працює без нагляду

Завантаження

Виберіть збірку для вашої системи

Розпакуйте архів і запустіть. tfg - це командний рядок, а tfg-gui - десктопне вікно. Немає інсталятора й нічого, що треба додавати на вашу машину.

Система Командний рядок Десктопне вікно
Windows amd64, arm64 amd64
Linux amd64, arm64 amd64
macOS arm64 arm64

Що підписано, а що ні

Збірки для Windows і macOS підписані, тому запускаються без попередження про невідомого розробника. Збірки для Linux не підписані, бо в десктопного Linux немає еквівалента, яким їх можна підписати. Кожен архів указано в verify-SHA256SUMS.txt на сторінці релізу, тож ви можете перевірити, що завантажили.

Безкоштовно, відкритий код, GPL-3.0. Без реєстрації. Збірки для Windows і macOS підписані та запускаються без попереджень.