python/pyspark中的模拟数据库连接

python/pyspark中的模拟数据库连接,python,python-unittest,Python,Python Unittest,我有以下python项目的项目结构 (base) [ ~ streaming]$ tree . |-- __init__.py |-- src | |-- __init__.py | |-- rdbms.py | `-- source.py `-- tests |-- __init__.py |-- test_rdbms_conn.py `-- test_utils.py 测试rdbms\u连接件 from unittest import mock fro

我有以下python项目的项目结构

(base) [ ~ streaming]$ tree
.
|-- __init__.py
|-- src
|   |-- __init__.py
|   |-- rdbms.py
|   `-- source.py
`-- tests
    |-- __init__.py
    |-- test_rdbms_conn.py
    `-- test_utils.py
测试rdbms\u连接件

from unittest import mock

from src.source import rdbms_conn
from tests.test_utils import *

@mock.patch("src.rdbms.rdbms")
def test_rdbms_conn(dbmock):
    dbmock.return_value = MockDataFrame()
    call_obj = rdbms_conn()
    assert call_obj.count() == 10
class MockDataFrame:
    def count(self):
        return 10
from src.rdbms import rdbms
def rdbms_conn():
    result = rdbms()
    return result
def rdbms():
    print("in rdbms function")
    var = 15
    return var
test_utils.py

from unittest import mock

from src.source import rdbms_conn
from tests.test_utils import *

@mock.patch("src.rdbms.rdbms")
def test_rdbms_conn(dbmock):
    dbmock.return_value = MockDataFrame()
    call_obj = rdbms_conn()
    assert call_obj.count() == 10
class MockDataFrame:
    def count(self):
        return 10
from src.rdbms import rdbms
def rdbms_conn():
    result = rdbms()
    return result
def rdbms():
    print("in rdbms function")
    var = 15
    return var
source.py

from unittest import mock

from src.source import rdbms_conn
from tests.test_utils import *

@mock.patch("src.rdbms.rdbms")
def test_rdbms_conn(dbmock):
    dbmock.return_value = MockDataFrame()
    call_obj = rdbms_conn()
    assert call_obj.count() == 10
class MockDataFrame:
    def count(self):
        return 10
from src.rdbms import rdbms
def rdbms_conn():
    result = rdbms()
    return result
def rdbms():
    print("in rdbms function")
    var = 15
    return var
rdbms.py

from unittest import mock

from src.source import rdbms_conn
from tests.test_utils import *

@mock.patch("src.rdbms.rdbms")
def test_rdbms_conn(dbmock):
    dbmock.return_value = MockDataFrame()
    call_obj = rdbms_conn()
    assert call_obj.count() == 10
class MockDataFrame:
    def count(self):
        return 10
from src.rdbms import rdbms
def rdbms_conn():
    result = rdbms()
    return result
def rdbms():
    print("in rdbms function")
    var = 15
    return var
函数包含对DB的实际调用,我想在测试时在rdbms_conn函数中模拟此函数

但是,当我尝试使用pytest和rdbms函数的mock对象测试rdbms_conn.py时,rdbms函数将被执行,而不是使用mock对象

有人能帮我弄清楚如何模拟rdbms函数调用。

@mock.patch(“src.rdbms.rdbms”)
更改为
@mock.patch(“src.source.rdbms”)
解决了这个问题。因此,基本上,我们需要模拟使用对象的位置,而不是原始函数。