在进行软件测试的过程中,经常会有文件上传功能的需求(例如头像上传、商品图上传等),这时候就需要考虑文件大小的边界值,例如只可上传1-2MB的图片,5-10MB的文件,想要验证需求的话,就需要找到合适大小的文件,这样的文件很难获取,为了提升测试效率,我决定开发一个测试工具,用于生成指定文件大小,以应对这种边界测试情况。
思路:可以考虑写一个方法,将文件大小MB转化为N个字节Byte,然后写入N个1字节字符到一个文件中,这样就可以实现创建指定大小的文件。但是需要考虑的是,如果我需要一个0.9MB的文件,转化为字节的时候,可能出现小数的问题,众所周知,字节已经是最小的单位,如果代码中出现0.2个字节,必然会报错,因此,我引入了round方法,将转化后的数值四舍五入,这样就能解决这个问题。
代码:
# [应用]生成指定大小的文件
# 应用场景:头像上传、图片上传
import tkinter as tk
# 传入三个参数:文件类型、文件名、文件大小(MB)
def generate_file():
file_type = e1.get()
file_name = e2.get()
file_mb = float(e3.get())
# 1MB = 1024KB =1024 * 1024byte
file_byte = file_mb * 1024 * 1024
# 二进制文件
if file_type == "bin":
with open(file_name + ".bin", "wb") as f:
f.write(b"\x00" * round(file_byte))
# 其他类型文件如txt、excel、png、jpg等
else:
with open(file_name + "." + file_type, 'w') as f:
f.write("A" * round(file_byte))
# 创建GUI界面
window = tk.Tk()
window.title("测试工具-生成指定大小文件")
window.geometry("330x330")
l1 = tk.Label(window, text="请输入文件类型如txt、bin、jpg、excel等")
e1 = tk.Entry(window, width=12)
l2 = tk.Label(window, text="请输入文件名")
e2 = tk.Entry(window, width=12)
l3 = tk.Label(window, text="你想要多大的文件(单位:MB)")
e3 = tk.Entry(window, width=12)
b = tk.Button(window, text="点击生成", command=generate_file)
l1.pack()
e1.pack()
l2.pack()
e2.pack()
l3.pack()
e3.pack()
b.pack()
window.mainloop()
运行:
可以看到,生成了一个刚好2MB的TXT文件
免费领取更多软件测试行业相关资料,优秀简历,课程,实战项目等可移步至下方小卡片领取,备注“优快云”。