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