加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:52:18 所属栏目:Python 来源:网络整理
导读:我正在用 Python进行单元测试,我试图检查两个列表中的元素是否在彼此的特定范围内.我正在考虑的两个列表是yield和list_of_yields,并且正在考虑使用self.assertEqual(round(yield-list_of_yields,7),0).但是 – 列表是一个不受支持的类型,所以我的两个问题是
我正在用 Python进行单元测试,我试图检查两个列表中的元素是否在彼此的特定范围内.我正在考虑的两个列表是yield和list_of_yields,并且正在考虑使用self.assertEqual(round(yield-list_of_yields,7),0).但是 – 列表是一个不受支持的类型,所以我的两个问题是如何检查元素是否在一定范围内以及如何对多个元素执行断言,因为我被告知有多个断言是不好的做法.我看到 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,msg="Test failed: got {0} expected {1} at index {2}".format(result,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,list_of_yields):
        self.assertTrue(comp_function(result,expected),index))
        index+=1

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读