pytest中使用assert对比openpyxl读取的工作表列表值失败如何解决
问题根源
你断言失败的核心原因是类型不匹配:
- 左侧
output = list(sheet.values)得到的是Python原生列表类型,内部元素是元组、datetime对象、整数等真实数据 - 右侧你加了双引号,把预期值写成了字符串类型,二者类型不同自然判定不等,报错里出现的
\n是字符串里存储的列表打印格式换行符,和真实列表完全无关。
修正方案
- 首先确保你提前导入了datetime模块
- 去掉预期值的外层引号,直接写真实的Python列表作为预期结果即可。如果你的原表格第三行日期是2019年1月3日,你之前提取结果里的最后一行日期属于笔误,也需要对应修正:
import datetime output = list(sheet.values) expected = [ ('Date',), (datetime.datetime(2019, 1, 1, 0, 0), 300), (datetime.datetime(2019, 1, 2, 0, 0), 450), (datetime.datetime(2019, 1, 3, 0, 0), 700) ] assert output == expected
如果你的工作表提取结果最后一行确实是2019年1月1日,把expected最后一行的日期改回datetime.datetime(2019, 1, 1, 0, 0)即可。
内容的提问来源于stack exchange,提问作者zsh_18
相关产品推荐
相关产品推荐

