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

标签 python unit-testing

我正在用 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/

相关文章:

python - 在tensorflow中初始化变量、变量范围和import_graph_def

python - 构建 Blaze 需要什么 Clang++?

python - 比较跨实例安装的 Jenkins 插件

unit-testing - 我应该如何结合 ReSharper 6.1 设置 QUnit

iphone - 在设备上运行 OCUnit 应用程序测试套件时偶尔会出错

java - 如何测试基于ajax的网站?

python - 扭曲的非关系数据库

python - Pandas dataframe 使用 groupby 对子集进行反向排序

java - 在断言之前测试被测试对象是否不为空的正确方法

c# - 如何对以文件名作为参数的方法进行单元测试