gpt4 book ai didi

python - 测试带有 float 的元组的断言

转载 作者:太空狗 更新时间:2023-10-29 22:12:00 25 4
gpt4 key购买 nike

我有一个函数返回一个元组,其中包含一个浮点值。通常我使用 assertAlmostEquals 来比较它们,但这不适用于元组。此外,元组还包含其他数据类型。目前我正在单独断言元组的每个元素,但是对于这样的元组列表来说这太过分了。有什么好的方法可以为这种情况编写断言吗?考虑这个函数:

def f(a):
return [(1.0/x, x * 2) for x in a]

现在我想为它写一个测试:

def testF(self):
self.assertEqual(f(range(1,3)), [(1.0, 2), (0.5, 4)])

这将失败,因为 1.0/2 的结果不完全是 0.5。谁能推荐一种以可读方式编写此类断言的好方法?

编辑:实际上 1.0/2 正好是 0.5,但你明白我的意思了。

最佳答案

好吧,用几个 zip 来提升你的功能怎么样:

def testF(self):
for tuple1, tuple2 in zip(f(range(1,3)), [(1.0, 2), (0.5, 4)]):
for val1, val2 in zip(tuple1, tuple2):
if type(val2) is float:
self.assertAlmostEquals(val1, val2, 5)
else:
self.assertEquals(val1, val2)

我这里的前提是,最好在循环中使用多个断言以获取它中断时的确切值,而不是使用带有 all() 的单个断言。

附言。如果您有其他要使用 assertAlmostEquals 的数字类型,您可以将上面的 if 更改为例如if type(val2) in [float, decimal.Decimal]:

关于python - 测试带有 float 的元组的断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com