如何对返回两个字典的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
相关产品推荐
相关产品推荐

