Testing Files Generator
简体中文

生成大小精确的真实测试文件

PDF、PNG、DOCX、ZIP,共 26 种格式,每一种都是能在对应软件中打开的真实文件,大小恰好等于你的要求。每次运行还会写下你的应用应该如何处理每个文件。命令行加桌面窗口,免费开源,完全在你的机器上运行。

免费开源,GPL-3.0。无需注册。Windows 和 macOS 的下载包已签名,启动时没有警告。

Testing Files Generator 的桌面窗口,已准备好写出一批测试文件
桌面窗口,已准备好写出一批文件。命令行背后运行的是同一个引擎。

问题所在

做一个测试文件很容易,做出对的一千个才是麻烦所在

你在测试接收用户文件的软件。迟早你会需要:

这正是它要取代的。它为 QA 工程师、测试自动化,以及代码背后有上传表单、导入程序、解析器或存储配额的所有人而做。

它的与众不同之处

其他生成器止步于字节。这个工具回答你的测试真正要问的问题

一个满是文件的文件夹仍然要你自己判断每个文件应该证明什么。这里每次运行都会在文件旁写出一个 manifest.json,它是所生成内容的简单清单,并为每一项给出声明的预期。

假设你的上传接口允许 1 MB。请求恰好位于这条线上的三个文件:

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. 生成大量文件

    一万个日志文件,每个在 1 到 8 KB 之间,大小由种子抽取,因此明天会得到同样的文件集。给每次运行一个独立的目录,清单是一次运行所写内容的唯一记录,所以工具拒绝在其上再写第二份:

    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 的下载包已签名,启动时没有警告。