Python中无返回值函数的单元测试方法咨询
CS50期末项目:PDF工资条生成器测试方案
1. 测试create_pdf()函数
- 准备固定测试用的.xlsx文件,比如包含2-3条明确的工资数据(姓名、工号、薪资等字段写死)
- 调用
create_pdf()时指定一个临时输出目录,避免和正式文件混淆 - 验证点:
- 输出目录下生成的PDF文件数量,是否和Excel中有效数据行数一致(注意排除表头行)
- 用
pdfplumber或PyPDF2读取其中一个PDF,提取文本内容,检查是否和对应行的Excel数据匹配(比如姓名、薪资数值是否正确)
2. 测试merge_pdf()函数
- 先准备几个已知的测试PDF文件(比如手动创建2个带内容的PDF,或用
create_pdf()生成的测试文件) - 调用
merge_pdf(),传入测试PDF列表和合并后的输出路径 - 验证点:
- 检查指定路径下是否存在合并后的PDF文件
- 用PDF工具读取合并文件的总页数,是否等于所有输入PDF的页数之和
- 可选:提取合并文件的文本,确认内容是各个输入PDF的内容按顺序拼接的
3. 测试get_print_date()函数
方法一:用Mock固定时间(推荐)
- 用
unittest.mock.patch替换datetime.now()的返回值,比如固定为datetime(2024, 5, 20, 14, 30, 0) - 调用
get_print_date(),断言返回的字符串是否和你预期的格式匹配(比如"2024-05-20 14:30:00")
方法二:验证格式和时间范围
- 调用函数获取返回字符串,用正则表达式检查格式是否符合你定义的规则(比如匹配
^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) - 把返回字符串转成
datetime对象,检查它和当前时间的差值是否在几秒内(抵消代码执行的微小延迟)
内容的提问来源于stack exchange,提问作者SoulSeeker916
相关产品推荐
相关产品推荐

