0
このコードはPython 3.5では動作しますが、2.7では動作しません。python2.7とpython3.5の名前付きタプルとタプルの比較の違い
mock.ANY
特殊オブジェクトを含む通常のタプルを使用して、名前付きタプルを照合しようとしています。
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でも動作させることができますか? その理由は何ですか?
私は通訳のバージョン
にEDIT変更することはできません。また、モックが異なるオブジェクトとしてタプルとnamedtuplesを見ているいくつかの理由
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