gpt4 book ai didi

python - 涉及两个列表的 Python 单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:14 25 4
gpt4 key购买 nike

我正在用 Python 进行单元测试,我试图检查两个列表中的元素是否在彼此的特定范围内。我正在考虑的两个列表是 yieldslist_of_yields 并且正在考虑做 self.assertEqual(round(yields-list_of_yields, 7), 0) .但是 - 是列表不受支持的类型,所以我的两个问题是如何检查元素是否在一定范围内以及如何在多个元素上执行 assert有人告诉我,拥有多个 asserts 是不好的做法。我看到了this answer ,但我的问题略有不同。

谢谢

最佳答案

如果元素要按照它们出现的确切顺序进行比较,您可以创建一个实用函数,它接受参数并检查它们是否满足某些条件:

def close_round(item1, item2, rounding_param):
"""Determines closeness for our test purposes"""
return round(item1, rounding_param) == round(item2, rounding_param)

然后你可以像这样在测试用例中使用它:

assert len(yields1) == len(list_of_yields)
index = 0
for result, expected in zip(yields, list_of_yields):
self.assertTrue(close_round(result, expected, 7),
msg="Test failed: got {0} expected {1} at index {2}".format(result, expected, index))
index+=1

您可能会发现这种类型的模式很有用,在这种情况下您可以创建一个函数来执行此操作:

def test_lists_close(self, lst1, lst2, comp_function):
"""Tests if lst1 and lst2 are equal by applying comp_function
to every element of both lists"""
assert len(lst1) == len(lst2)
index = 0
for result, expected in zip(yields, list_of_yields):
self.assertTrue(comp_function(result, expected),
msg="Test failed: got {0} expected {1} at index {2}".format(result, expected, index))
index+=1

如果您经常使用它,您可能也想测试这个功能。

关于python - 涉及两个列表的 Python 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079737/

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