说我有一类叫做客户端创建Request类的一个对象,并把它传递给Connection对象的一个方法的对象:断言传递到在Python一个模拟的方法模拟
class Client(object):
def __init__(self, connection):
self._conn = connection
def sendText(plaintext):
self._conn.send(Request(0, plaintext))
我想要断言传递给Connection.send方法的对象来检查它的属性。我开始创建一个嘲笑Connection类:
conn = Mock()
client = Client(conn)
client.sendText('some message')
然后,我想是这样的:
conn.send.assert_called_with(
(Request,
{'type': 0, 'text': 'some message'})
)
在哪里“类型”和“文本”是请求的性质。有没有办法在python的模拟中做到这一点?我在文档中找到的只是简单的数据示例。 我可以通过与断言对象的字段的方法取代原来的“发送”法mock.patch装饰做到了:
def patchedSend(self, req):
assert req.Type == 0
with mock.patch.object(Connection, 'send', TestClient.patchedSend):
...
但在这种情况下,我必须定义一个separete嘲笑功能为每方法检查,如果函数已被调用,则无法检查(无需额外编码)。
这就是我需要的。谢谢。 –