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