使用 Python Unittest 测试数组中的结果

Using Python Unittest to test results in an array

我实现了一个计算年度抵押贷款还款的函数,我想测试它是否生成正确的结果。

我已将输入抵押值放入一个数组中,例如:

input_array([   50000.,   100000.,   150000., ...])

和另一个数组中的相应结果:

output_array([   3200.60,   6401.20,   9601.79, ...])

我想将输入数组中的每个元素作为我函数的输入并测试结果是否与output_array相同。

是否可以自动完成,而不是在 assertEqual 函数中手动输入抵押值和预期输出?

非常感谢。

assertListEqual(map(f, input_array), output_array)

你有两个选择。首先,只比较整个数组:

expected_list = [1, 2, 3, 4]
output_list = calc_mortgage([10, 20, 30, 42])
self.assertEqual(expected_list, output_list)

第二种,可以比较每个元素:

expected_list = [1, 2, 3, 4]
output_list = calc_mortgage([10, 20, 30, 42])
for pair in zip(expected_list, output_list):
    self.assertEqual(pair[0], pair[1])

对于 numpy 数组,类似于:

self.assertTrue(
    numpy.allclose(calc_mortgage([10, 20, 30, 42], [1, 2, 3, 4]),
    msg="calc_mortgage error"
)