【问题标题】:How to test multiple return values with python?如何用python测试多个返回值?
【发布时间】:2021-03-10 17:39:11
【问题描述】:

所以我有一个返回正弦和余弦的函数和另一个基本的 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 不能正常工作。

【问题讨论】:

  • 理解这一点很重要,你永远只能有一个返回值。您正在返回一个长度为 2 的元组

标签: python return python-unittest


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2019-12-11
    • 2010-11-09
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多