Python中具有多个返回值的方法的Unittest

Python中具有多个返回值的方法的Unittest,python,unit-testing,Python,Unit Testing,我想用Python为具有多个返回值的方法创建一个unittest。例如,假设我想测试以下方法: def example(x, y): sum = x + y dif = x - y return sum, dif 有没有办法对这种方法进行单元测试? (我知道我可以将上述内容分为两种不同的方法,但这只是一个简单的示例)捕获所有返回值,然后分别测试它们 ... numsum,dif = example(5,3) self.assertEqual(numsum

我想用Python为具有多个返回值的方法创建一个unittest。例如,假设我想测试以下方法:

def example(x, y):
    sum = x + y
    dif = x - y
    return sum, dif
有没有办法对这种方法进行单元测试?
(我知道我可以将上述内容分为两种不同的方法,但这只是一个简单的示例)

捕获所有返回值,然后分别测试它们

...
    numsum,dif = example(5,3)
    self.assertEqual(numsum,8)
    self.assertEqual(dif,2)
或者,正如@sleigh\u bells指出的,将一个元组与返回的元组进行比较:

self.assertEqual(example(5,3),(8,2))
你可以

assertEqual([sum, dif], [expected_sum, expected_dif])
根据Python文档,这实际上将运行AssertListQual,因为传入了两个列表


您可以定义一个具有预期结果的元组变量,并将其提供给assert函数:

预期结果=(15,5)
self.assertEqual(示例(10,5),预期结果)

此函数如何导致单元测试出现问题?也许您不知道,在Python中,您所谓的“返回两个值”实际上是返回一个元组对象(其中包含两个值)。您可以像往常一样使用另一个对象
assertEqual
。您也可以先解压缩值,如Alan所示。谢谢。我是Python新手,我不知道在assert one(到处都可以找到像self.assertEqual('foo'.upper(),'foo')这样的东西)之前可以运行该方法。assertEqual在Python中使用是一个不好的变量名。@DelriousRecast有一个很好的观点。我刚刚使用了OP.Updated中的示例名称。@AlanHoover没问题,看起来这应该是公认的答案,所以我想在这里提及它。