Python单元测试模块差异认为`tzinfo = <utc>`和`tzinfo = tzutc()`不相等

时间:2018-10-09 09:38:51

标签: python testing python-unittest

在Python的assertListEqual()模块中使用unittest时遇到问题。

当我执行self.assertListEqual(expected, result)时,它会正确比较项目。但是,当有一点差异时,我就会感到与众不同。在该差异中,除了绝对不同的项目之外,我还得到很多类似的代码:

enter image description here

问题是:仅看到真正不同的元素,我该如何摆脱呢?

要生成expected时间戳,我使用dateutil.parser.parse和Django的ORM。

下面是显示以下内容的示例代码:

from datetime import datetime
import unittest
import pytz

from dateutil.parser import parse


class Test(unittest.TestCase):

    def test_foo(self):

        expected = [{
            'value': 1,
            'timestamp': datetime(2018, 1, 1, 0, 0, 0, tzinfo=pytz.utc),
        }]

        result = [{
            'value': 0,
            'timestamp': parse('2018-01-01T00:00:00Z'),
        }]

        self.assertListEqual(expected, result)


if __name__ == '__main__':
    unittest.main()

1 个答案:

答案 0 :(得分:1)

尝试一下:

from datetime import datetime
import unittest
import pytz

import dateutil
from dateutil.parser import parse


class Test(unittest.TestCase):

    def test_foo(self):

        expected = [{
            'value': 1,
            'timestamp': datetime(2018, 1, 1, 0, 0, 0, tzinfo=dateutil.tz.tz.tzutc()),
        }]

        result = [{
            'value': 1,
            'timestamp': parse('2018-01-01T00:00:00Z'),
        }]

        self.assertListEqual(expected, result)


if __name__ == '__main__':
    unittest.main()