我在一个类中有一个函数,它返回两个字典。
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
我想编写一个单元测试来测试函数funct1,它返回两个字典
答案 0 :(得分:3)
Python函数只返回一个对象,总是。在您的情况下,该对象是包含两个对象的元组。
试试这两个对象;您可以在作业中解压缩它们并测试各个词典,例如:
def test_func1_single(self):
instance_under_test = A()
d1, d2 = instance_under_test.func1(42, 81)
self.assertEqual(d1, {'a': 42})
self.assertEqual(d2, {'b': 81})
def test_func1_(self):
instance_under_test = A()
d1, d2 = instance_under_test.func1(42, 81)
self.assertEqual(d1, {'a': 42})
self.assertEqual(d2, {'b': 81})
d3, d4 = instance_under_test.func1(123, 321)
# these are still the same dictionary objects
self.assertIs(d3, d1)
self.assertIs(d4, d2)
# but the values have changed
self.assertEqual(d1, {'a': 123})
self.assertEqual(d2, {'b': 321})
您的测试完全取决于您的具体使用案例和要求。
答案 1 :(得分:0)
一个简单的测试就是
o = A() # creates an instance of A
a, b = o.funct1(1, 2) # call methods and unpack the result in two variables
assert a["a"] == 1 and b["b"] == 2 # test the values according to our precedent function call
在python中没有任何直觉反对