Python unittest 模块差异认为 `tzinfo=<UTC>` 和 `tzinfo=tzutc()` 不相等
Python unittest module diff consider `tzinfo=<UTC>` and `tzinfo=tzutc()` unequal
我在 Python 的 unittest
模块中使用 assertListEqual()
时遇到问题。
当我执行 self.assertListEqual(expected, result)
时,它会正确比较项目。但是当有一点不同时,我就会得到一个差异。在那个差异中,除了明显不同的项目外,我得到很多行,如:
问题是:我怎样才能摆脱它,只看到真正不同的元素?
为了生成 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()
试试这个:
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()
我在 Python 的 unittest
模块中使用 assertListEqual()
时遇到问题。
当我执行 self.assertListEqual(expected, result)
时,它会正确比较项目。但是当有一点不同时,我就会得到一个差异。在那个差异中,除了明显不同的项目外,我得到很多行,如:
问题是:我怎样才能摆脱它,只看到真正不同的元素?
为了生成 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()
试试这个:
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()