我正在使用模拟库来修补程序中的类,该程序连接到外部资源并发送命令。
这样的结构有点像...
code.py
def make_connection():
connection = OriginalClass(host, port)
connection.connect()
connection.send(param)
connection.close()
test.py
@mock.path('code.OriginalClass')
def test_connection(self, mocked_conn):
code.make_connection()
mocked_conn.assert_called_with(host, port)
mocked_conn.connect.assert_called_once()
mocked_conn.send.assert_called_with(param)
第一个assert_Called_with可以完美地工作,但是对模拟类的方法的调用没有通过。我尝试使用patch.object作为装饰器也没有运气。
该connect()
和send()
方法被称为在返回值第一次调用的; 相应地调整测试:
mocked_conn.return_value.connect.assert_called_once()
mocked_conn.return_value.send.assert_called_with(param)
我通常先存储对“实例”的引用:
@mock.path('code.OriginalClass')
def test_connection(self, mocked_conn):
code.make_connection()
mocked_conn.assert_called_with(host, port)
mocked_instance = mocked_conn.return_value
mocked_instance.connect.assert_called_once()
mocked_instance.send.assert_called_with(param)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句