如何在unittest.TestCase setUp方法中使用类补丁装饰器

时间:2016-08-15 23:12:36

标签: python unit-testing mocking patch

我目前正在编写Python中sqlite3包装器的测试覆盖率。目前我的代码看起来像这样:

import unittest
from unittest.mock import patch
from MemberDatabase import MemberDatabase

@patch('sqlite3.connect')
class MemberDatabaseTestCase(unittest.TestCase):
    def test_dbConnect(self, mocksql_connect):
        mdb = MemberDatabase('test.db')
        mocksql_connect.assert_called_with('test.db')

    def test_optionalCommit(self, mocksql_connect):
        mdb = MemberDatabase('test.db')
        mdb.optionalCommit()
        self.assertTrue(mocksql_connect().commit.called)

其他各种测试都以相同的方式创建mdbMemberDatabase的构造函数调用sqlite3.connect()。我想通过将mdb的分配移到setUp()来整理测试用例。但是,sqlite3.connect()中的setUp()并未被模拟,因此会导致调用实际的sqlite3.connect()并创建真正的数据库连接。

有没有办法在sqlite3.connect()中使用已修补的setUp()?也许我需要在setUp()内创建模拟而不是使用装饰器,但我认为使用装饰器方法的代码更清晰。另外,我读过如果我创建模拟

0 个答案:

没有答案