0
私は内側の方法は、コードのこの部分を持っているPythonのmagicmock原因「NoneType」オブジェクトには属性「登録解除」
subscriberMock = MagicMock(side_effect=subscriber)
subscriberMock.return_value.unregister.return_value = True
with patch('rospy.Subscriber', subscriberMock):
data['op'] = "unsubscribe"
data['topic'] = "/helo"
self.rosbridge.incoming(data)
書いたカスタムモックと関数呼び出しにパッチを適用しようとしているがありません
self.subscribers[topic] = rospy.Subscriber(topic, 'msg', outgoing_function)
self.subscribers[topic].unregister() # <-- AttributeError
しかし、私はこれを実行すると、それは属性エラーに
「を返すNoneType」オブジェクトには属性「登録解除」を持っていない
私はreturn_value
を推測しているがNoneTypeに設定されているが、私はこのsubscriberMock.return_value.unregister.return_value
はそれを
詳細情報を上書きするだろうと思った:
私はself.subscribers[topic]
を印刷する場合、それはNone
を返します。その後、副作用を実行します。 self.subscribers[topic] = None
なぜ私はそれにパラメータの戻り値を持っている必要があります。代わりに、上記のモックの
は 'の出力は何ですか副作用
MagicMockのいずれかが戻り値または副作用を持っているので、これは内インスタンス化を呼び出すモックを記述する必要がありあなたがそれを印刷するときにself.subscribers [トピック] '? –