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

Python单元测试报AttributeError: 'NoneType'无'dropna'属性怎么解决

错误原因

报错核心原因是单元测试代码中未给NumericColumn实例的serie属性赋值,该属性默认值为None,调用dropna方法时触发空对象属性错误。你其他功能运行正常是因为业务场景下使用该类时,会正确传入pd.Series类型的serie值,仅单元测试代码存在疏漏。

解决方案

方案1:补全单元测试用例的初始化逻辑(推荐)

按照你断言的返回值要求(唯一值数为7、缺失值数为1),构造对应的pd.Series赋值给dc1.serie即可,修改后的test_numeric.py代码如下:

import unittest
from src.numeric import NumericColumn
import pandas as pd

class TestNumeric(unittest.TestCase):  
    def test_numeric(self):
        ### test on dummy data ###
        # 构造符合预期的测试序列:非空唯一值7个,缺失值1个
        test_serie = pd.Series([1,2,2,3,4,5,6,7, None])
        dc1 = NumericColumn()
        dc1.col_name = "my_test"
        dc1.serie = test_serie # 新增serie赋值代码

        # test methods
        self.assertEqual(dc1.get_name(),"my_test")
        self.assertEqual(dc1.get_unique(),7)
        self.assertEqual(dc1.get_missing(),1)

方案2:给业务代码增加空值容错(可选)

如果要避免后续其他场景传入空serie时直接报错,可以给NumericColumn的方法增加空值判断,修改numeric.py对应方法:

def get_unique(self):
    """
    Return number of unique values for selected column
    """
    if self.serie is None:
        return 0 # 也可以根据业务需求抛自定义错误
    return self.serie.dropna().unique.size

def get_missing(self):
    """
    Return number of missing values for selected column
    """
    if self.serie is None:
        return 0
    return self.serie.isna().sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:06:00