python的模拟库方法

python的模拟库方法,python,unit-testing,Python,Unit Testing,我正在尝试对与数据库的类连接进行单元测试。为了避免对数据库进行硬编码,我想声明使用足够的值调用mysql.connector.connect方法 from mysql.connector import connect from mysql.connector import Error from discovery.database import Database class MariaDatabase(Database): def connect(self, username,

我正在尝试对与数据库的类连接进行单元测试。为了避免对数据库进行硬编码,我想声明使用足够的值调用mysql.connector.connect方法

from mysql.connector import connect
from mysql.connector import Error

from discovery.database import Database


class MariaDatabase(Database):

    def connect(self, username, password):
        """
        Don't forget to close the connection !

        :return: connection to the database
        """
        try:
            return connect(host=str(self.target),
                           database=self.db_name,
                           user=username,
                           password=password)
我已经阅读了关于mock和类似问题的文档(特别是这一个,我认为它可以解决我的问题,但是mysql.connector.connect一直被调用,而不是mock)


我不知道我能做些什么来测试这个类

为什么不在测试开始时创建一个测试数据库,并在测试完成后删除它?还有“别忘了关闭连接!”==>阅读关键词,它可能会有帮助。你对如何模拟数据库有什么见解吗?那确实能有效地解决我的问题!我只希望对象将连接提供给调用方。该类不允许执行查询/其他操作,只需返回连接即可。我不确定在这种情况下是否可以使用?您可以在每个测试用例中的
setUp
方法中设置一个db。另外,请参阅修补方法的说明和答案使用
@mock.patch.object(MariaDatabase,'connect')
@mock.patch('ur_pkg.maria_database.mysql.connector')
启动,其中
maria_database
MariaDatabase
所在的模块名。并更新您的帖子。