0
這段代碼適用於python 3.5,但不適用於2.7。python2.7和python3.5之間的名稱和元組比較區別
我想通過使用包含mock.ANY
特殊對象的常規元組來匹配namedtuple。
try:
import unittest.mock as mock # python 3.5
except:
import mock # python 2.7
def test_datetime():
from collections import namedtuple
from datetime import datetime
A = namedtuple("A", ["a", "b"])
now = datetime.utcnow()
def foo(a):
a.bar(A(now, "b"))
a = mock.MagicMock()
foo(a)
a.bar.assert_called_once_with((mock.ANY, "b"))
if __name__ == "__main__":
print("Testing")
test_datetime()
我怎樣才能讓它在python 2.7中工作呢? 這是什麼原因?
我不能改變的翻譯版本
編輯:
進一步降低到
try:
import unittest.mock as mock # python 3.5
except:
import mock # python 2.7
from collections import namedtuple
from datetime import datetime
now = datetime.now()
A = namedtuple("A", ["a"])
(mock.ANY,)==A(now) # False in py2.7, true in py3.5