You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Openpyxl+pytest技术问题:如何正确校验单元格是否为空?

问题分析

你当前的断言只检查了cell_values["marks"]是否为None,但实际场景里,单元格为空时返回的大概率是空字符串""而非None,这就导致了两种异常:

  • 当单元格是正常值(比如5)时,断言触发报错(这是预期内的,但你的校验逻辑没命中真正的空场景)
  • 当单元格确实为空时,因为返回的是空字符串不是None,断言根本不会触发,相当于没校验到空的情况
正确的校验方式

根据数据源返回的实际空值类型,选择对应的校验逻辑:

1. 同时覆盖空字符串和None

如果单元格为空时可能返回""或None两种情况,用逻辑或覆盖:

assert cell_values["marks"] in (None, ""), (
    f"The value in 'marks' is not empty for row {row_number}. "
    f"Actual: {repr(cell_values['marks'])}"
)

用repr()能清晰显示值的类型(比如空字符串会显示为'',None显示为None),方便调试。

2. 仅校验空字符串(若数据源空值统一返回"")

如果确认所有空单元格都返回空字符串,直接断言等于"":

assert cell_values["marks"] == "", (
    f"The value in 'marks' is not empty for row {row_number}. "
    f"Actual: {cell_values['marks']}"
)

额外注意

有些数据源(比如用pandas读取的Excel)空单元格会返回nan,这种情况要加入对应的校验:

import pandas as pd
assert pd.isna(cell_values["marks"]), (
    f"The value in 'marks' is not empty for row {row_number}. "
    f"Actual: {cell_values['marks']}"
)

内容的提问来源于stack exchange,提问作者paigusov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:17:10