如何对具有两个返回值的函数进行单元测试?



我在一个类中有一个返回两个字典的函数。

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

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})

您测试的内容取决于您的特定用例和要求。

一个简单的测试是

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中没有什么违反直觉的

最新更新