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

如何对返回两个字典的Python类方法进行单元测试?

为返回两个字典的方法编写单元测试

很简单!我来给你演示如何为A类中的funct1方法编写单元测试,Python里常用的两种测试框架我都给你提供示例:

使用unittest框架(Python标准库)

这是Python自带的测试框架,不需要额外安装,写法如下:

import unittest

class A(): 
    def __init__(self): 
        self.dict1={} 
        self.dict2={} 
    def funct1(self,a,b): 
        self.dict1['a']=a 
        self.dict2['b']=b 
        return self.dict1,self.dict2

class TestClassA(unittest.TestCase):
    def test_funct1_correctly_returns_and_updates_dicts(self):
        # 1. 实例化待测试的类
        test_obj = A()
        # 2. 调用要测试的方法,传入测试用的参数
        returned_dict1, returned_dict2 = test_obj.funct1(a=123, b="hello")
        
        # 3. 断言返回的字典内容符合预期
        self.assertEqual(returned_dict1, {'a': 123})
        self.assertEqual(returned_dict2, {'b': "hello"})
        
        # 额外验证:类实例的属性也被正确修改了
        self.assertEqual(test_obj.dict1, {'a': 123})
        self.assertEqual(test_obj.dict2, {'b': "hello"})

if __name__ == '__main__':
    unittest.main()

运行方式:直接执行这个脚本,就能看到测试结果。

使用pytest框架(第三方简洁框架)

如果你更偏好简洁的写法,可以用pytest,需要先通过pip install pytest安装:

class A(): 
    def __init__(self): 
        self.dict1={} 
        self.dict2={} 
    def funct1(self,a,b): 
        self.dict1['a']=a 
        self.dict2['b']=b 
        return self.dict1,self.dict2

def test_funct1_returns_expected_dicts():
    test_obj = A()
    dict1, dict2 = test_obj.funct1(a=True, b=None)
    
    # 用assert断言结果符合预期
    assert dict1 == {'a': True}
    assert dict2 == {'b': None}
    
    # 同样可以验证实例属性的更新
    assert test_obj.dict1 == {'a': True}
    assert test_obj.dict2 == {'b': None}

运行方式:在命令行中执行 pytest 你的测试文件名.py -v,就能看到详细的测试结果。

小提示

你还可以扩展测试用例,比如测试不同类型的输入(比如列表、元组等可哈希值),或者多次调用funct1后字典的更新情况,确保方法在各种场景下都能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:42:11