Testing Files Generator(简称tfg)面向QA工程师与开发者,用来生成可正常打开、尺寸精确可控的真实文件,专门用于文件上传、内容解析、存储配额等场景的自动化测试,同时提供GUI图形界面与CLI命令行两种使用模式。
- GitHub:https://github.com/donislawdev/TestingFilesGenerator
- 网盘:https://pan.quark.cn/s/4daf816f0fae

核心能力
- 精确到字节:指定任意字节数,输出文件严格匹配,不会自动四舍五入。例如请求10485761字节的PDF,生成结果字节完全一致,且阅读器可正常打开,不是仅改后缀的零填充假文件。
- 支持24种真实文件格式:PNG、DOCX、ZIP等均可被对应软件正常打开;还可自定义参数,如图像分辨率、JPEG画质、PDF页数、表格行列数。
- 附带测试清单 manifest.json:每次生成文件时同步输出清单,记录每个文件的预期测试结果,测试脚本可直接读取清单做断言,不用人工编写预期逻辑。
- 确定性复现:相同配方与种子,在任意机器上生成完全一致的字节内容。版本管理只需保存简短配置,不用提交GB级二进制测试文件。
- 边界测试一键生成:一条命令生成边界用例:限制值减1、等于限制值、限制值加1,专门捕捉差一(off-by-one)类Bug。
- 批量生成:单条命令一次性产出上万个文件,大小自动从种子配置生成。
- 完整归档文件:可以生成内部包含数百个文档的真实ZIP压缩包,不是空壳存根文件。
- CI流水线友好:提供标准化退出码、机器可读输出;执行失败时标准输出干净无冗余信息。
- 内置校验与清理:
verify校验文件完整性;cleanup精准删除本次生成的文件,不会误删其他内容。 - 完全离线运行:无账号、无云端依赖、无遥测、不自动更新;CLI二进制不含网络相关代码。
- 开源协议 GPL-3.0,生成的文件版权归使用者。
支持格式清单
| 分类 | 格式 |
|---|---|
| 文档 | pdf、docx、xlsx、pptx |
| 图像 | png、jpg、bmp、gif、ico、svg、tiff、webp、avif、jxl |
| 文本/标记 | txt、md、csv、json、xml、html、log |
| 归档 | zip、targz(tar.gz) |
| 音频 | wav |
规划新增:7z、mp3、mp4
解决的痛点
在开发文件上传、导入解析功能时,测试经常需要:
- 恰好10MB的PDF,验证上传大小限制是否生效
- 限制值上下临界文件,用来捕获边界错误
- 上万条日志文件,测试程序在海量文件目录下的性能
- 内含大量文档的压缩包,验证解压与批量解析逻辑
- GB级测试文件,又不想把大二进制文件提交到代码仓库
- 跨机器(本地电脑、CI构建服务器)获得完全一致的测试样本
手动制作这类文件繁琐且难以保证字节精度,Testing Files Generator就是用来替代这部分手工工作。
使用示例
一键生成上传边界测试集,以1MB为限制,生成临界PDF文件:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
生成目录内会包含manifest.json,测试代码可直接读取预期结果做自动化断言,示例Python代码:
import json
import 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,不会编造预期造成测试误报。














0条评论