Python unittest 断言复杂字典



我正在尝试执行以下断言,但由于某种原因失败:

{'a': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 2.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 3.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])],
'b': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 4.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 5.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])],
'c': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 6.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 7.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])]} != {'a': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 2.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 3.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])],
'b': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 4.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 5.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])],
'c': [('Power',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 6.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)]),
('Speed',
[(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), 7.0),
(datetime.datetime(2018, 6, 11, 14, 1, 26, 911251), nan)])]}

我已经尝试了self.assertEqualself.assertDictEqual但仍然发生了同样的事情。我在测试中创建了一次日期时间,并且在所有示例中都是相同的。为什么会失败?我是 Python 测试的新手,所以一些帮助将不胜感激。

这是我运行assertDictEqual时得到的:

AssertionError: {'a':[1093 chars], (datetime.datetime(2018, 6, 11, 14, 30, 14, 965541), nan)])]} != {'a':[1093 chars], (datetime.datetime(2018, 6, 11, 14, 30, 14, 965541), nan)])]}

看来这就是问题所在

assert np.NaN == np.NaN

此操作失败。更多关于这个 这里.

相反,您可以使用numpy的方法进行断言:

from numpy.testing import assert_equal
assert_equal(instances, expected_instances)

就像一个魅力。

最新更新