11

次のコード行があります。

if not hasattr(class.a, u'c'):
    return

class.ac が hasattr に対して False を返すようにクラスをモックアウトするにはどうすればよいですか?

私がこれを行う場合:

>>> from mock import MagicMock
>>> mock_class = MagicMock(spec=[u'a'])
>>> hasattr(mock_class, u'a')
True
>>> hasattr(mock_class, u'b')
False
>>> hasattr(mock_class.a, u'c')
True

私はclass.acを仕様していませんが、それは嘲笑されています!!!

4

2 に答える 2

10

実際mock_class.aには、仕様を持たない別の MagicMock を作成します。私が考えることができる唯一の方法は、次のように、仕様を持つ別の MagicMockの属性aを割り当てることです。mock_class

mock_class = MagicMock(spec=[u'a'])
mock_class.a = MagicMock(spec=[u'a'])
hasattr(mock_class.a, u'c')  # returns False

また、モックしたい実際のオブジェクトがある場合は、再帰的な autospecingを実行する可能性があります。

于 2013-07-19T21:03:07.263 に答える