You need to enable JavaScript to run this app. 如何测试接收可变参数的Pandas函数 测试返回None类型报错
优惠活动
大模型
产品
解决方案
定价
更多

如何测试接收可变参数的Pandas函数 测试返回None类型报错

问题原因

你的new_year函数采用原地修改的方式更新传入的DataFrame,没有设置显式返回值,Python中无显式return的函数默认返回None,因此你把new_year(df1)的返回值传入assert_frame_equal时,左参数就是None,自然触发类型不匹配的报错。

解决方法

有两种可选方案,你可以根据业务需求选择:

方案1:不修改业务代码,调整测试逻辑

既然函数是原地修改入参,那调用完函数后直接对比修改后的入参即可,调整测试代码如下:

import pandas as pd
from pandas._testing import assert_frame_equal
from prog import new_year

def test_new_year():
    df1 = pd.DataFrame({'Name':['Jack', 'Jill'], 'Class':[4, 5]})
    df2 = pd.DataFrame({'Name':['Jack', 'Jill'], 'Class':[5, 6]})
    # 先调用函数修改df1
    new_year(df1)
    # 再对比修改后的df1和预期结果df2
    assert_frame_equal(df1, df2)

方案2:修改业务代码,让函数返回修改后的DataFrame

如果你希望函数有返回值方便链式调用,可以给业务函数加返回语句,修改prog.py中的new_year函数:

def new_year(df):
    df.Class += 1
    # 新增返回语句
    return df

修改后你原来写的测试代码不需要调整就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:30:01