Flask 的上传接口怎么写测试?文件怎么构造?临时目录怎么处理?哪些边界值得测?这篇用一组真实运行的 pytest 用例把写法与结果逐项列出。
test_single_file RESULT single 201 {'ctype': 'text/plain', 'field': 't1', 'original': 'a.txt', 'saved': '653ab3cb10d346b186307e726056bc6f.txt', 'size': 5}
PASSED
test_content_type_is_multipart_by_default RESULT auto-multipart 201 {'ctype': 'image/png', 'field': None, 'original': 'b.png', 'saved': '4291ea9ffdff411bb2080c1742544155.png', 'size': 1}
PASSED
test_declared_mimetype RESULT mimetype image/png
PASSED
test_no_file RESULT nofile 400 {'error': 'no file'}
PASSED
test_empty_filename RESULT emptyname 400 {'error': 'no file'}
PASSED
test_multi RESULT multi {'names': ['1.txt', '2.txt'], 'sizes': [1, 2]}
PASSED
test_too_large RESULT toolarge 413
PASSED
test_real_file_from_disk RESULT disk 201 30
PASSED
test_stream_position_matters RESULT position 3
PASSED
test_original_name_sanitized_on_disk RESULT name '../../evil name.txt' .txt ['.txt']
PASSED
============================== 10 passed in 0.03s ==============================上一篇:测试 Session;下一篇:测试异常处理器。
上传视图是一个简化版(保存到 UPLOAD_DIR、用 uuid 命名),类型校验见第 126 篇。