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

如何对接收两个入参的函数使用assertEqual进行单元测试?

核心问题澄清

你对assertEqual的功能存在误解,它本身仅负责比对两个输入值是否相等,没有自动调用指定目标函数、自动传参执行的能力。你之前单参数场景的写法能生效,仅适用于函数会原地修改输入的可变对象的特殊情况,并不是assertEqual自动帮你执行了函数。

补充说明:如果你的函数输入是int、字符串、元组这类不可变类型,或者函数逻辑是返回计算结果而非修改原入参,你之前的单参数测试写法本身就是错误的,调用函数不会改变原始inputted变量的值,测试结果毫无参考意义。

双入参场景的正确写法

场景1:和你单参数测试逻辑一致,函数原地修改第一个入参

这种情况直接在调用函数后,比对预期值和被修改的入参即可,不会触发报错:

def test_some_function(self):
    # 注意必须是列表、字典等可变对象才能被原地修改
    inputted_one = [1]
    inputted_two = 2
    some_function(inputted_one, inputted_two)
    output_expected = [1, 2]
    # 仅传入两个比对值即可,不需要把第二个入参也传给assertEqual
    self.assertEqual(output_expected, inputted_one)

场景2:函数有返回值、不修改原入参

这种场景下你要求避免的两种写法是Python单元测试的标准写法,没有替代方案。你之前的单参数写法在这种场景下完全不生效,不存在你认为的不需要显式调用函数的用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:08