python/pyspark中的模拟数据库连接
我有以下python项目的项目结构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
(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”)
解决了这个问题。因此,基本上,我们需要模拟使用对象的位置,而不是原始函数。