Pytest 比较字典

Pytest compare dicts

我正在使用 pytest。如果字典包含 numpy 数组作为值,你如何检查两个字典是否相等?

我下面的代码returns下面的错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

def test_init():
    tbl = DataTable(a=[1,2,4], b=[4,5,6]) 
    # tbl._data should be {"a":np.array([1,2,4]), "b":np.array([4,5,6])}

    assert tbl._data == {"a":np.array([1,2,4]), "b":np.array([4,5,6])}

问题:最简单的测试方法是什么?最好不要编写我自己的循环遍历字典的函数。

编辑

我想避免遍历 dict,因为它很乏味且容易出错,因此使测试本身有点无用。

expected_dict = {"c":np.array([1,2,3]), "b":np.array([4,5,6])}
actual_dict = tbl._data
assert all(a[0] == b[0] and all(a[1] == b[1]) for a,b in zip(actual_dict.items(), expected_dict.items()))

既然你想断言平等,你可以使用

numpy.testing.assert_equal(expected_dict, actual_dict)