首页 > 解决方案 > 如何模拟 aiomysql 池以返回模拟的连接对象?

问题描述

我正在尝试为我的一个模块编写单元测试用例,该模块使用 aiomysql 池与 MariaDB 交互。我正在尝试模拟单元测试的数据库调用。我正在使用 asynctest python 模块来模拟。

我试图模拟 aiomysql.pool 模块中的连接方法。结果是它为 Connection 返回了一个 NoneType 对象。

def test_new(self):
        with asynctest.patch('pcli.appliances.xyzdb.aiomysql.pool.connect', autospec=True) as mock_connect:
            reader = asynctest.MagicMock()
            reader.at_eof.return_value = False
            conn_obj = asynctest.MagicMock()
            conn_obj._reader = reader
            mock_connect.return_value = asynctest.MagicMock()
            import pdb; pdb.set_trace()
            apps = yield from get_all_appliances()

我希望连接对象是 MagicMock 的一个实例,可以通过添加必要的属性进行扩展。

标签: python-3.xmockingpython-asyncioaio

解决方案


推荐阅读