如何使用python测试多个返回值?

时间:2021-03-10 17:39:11

标签: python return python-unittest

所以我有这个返回正弦和余弦的函数和另一个基本的 unittest 函数,它应该用 assertEqual 测试两个返回值,但我不知道如何测试这两个返回值。最好的方法是什么?

def calc_sin_cos(sindeg, cosdeg):
    sine = math.sin(math.radians(sindeg))
    cosine = math.cos(math.radians(cosdeg))

    return sine, cosine

def test_calc_sin_cos(self):
    sine = 2
    cosine = 2
    result = myscript.calc_sin_cos(sine, cosine)
    self.assertEqual(result, 0.03489949670250097, 0.9993908270190958)

显然上面的 assertEqual 不能正常工作。

1 个答案:

答案 0 :(得分:1)

当方法返回多个值时,实际上是一个tuple,下面两行是相同的:

return sine, cosine
return (sine, cosine)

对于调用方法,这些都是一样的

result = myscript.calc_sin_cos(sine, cosine)
sin, cos = myscript.calc_sin_cos(sine, cosine)

要测试它们,请使用 assertEqual

  • 两个值都作为 tuple

    result = myscript.calc_sin_cos(sine, cosine)
    self.assertEqual(result, (0.03489949670250097, 0.9993908270190958))
    
  • 或两个单独的值

    sin, cos = myscript.calc_sin_cos(sine, cosine)
    self.assertEqual(sin, 0.03489949670250097)
    self.assertEqual(cos, 0.9993908270190958)
    

对于 float 值,可以使用有用的 unittest.assertAlmostEqual

  self.assertAlmostEqual(sin, 0.034, places=3)
  self.assertAlmostEqual(cos, 0.999, places=3)
相关问题