Я хотел бы иметь возможность создать заглушку базы данных (или макет), чтобы протестировать функцию, которая запрашивает базу данных, чем возвращает фрейм данных с использованием Pandas.В настоящее время я не могу создать должным образом смоделированную базу данных, поэтому в результате не создается фрейм данных.Я не уверен, где я ошибаюсь.
def p2ctt_data_frame():
conn = pyodbc.connect(
r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=My\Path\To\Actual\Database\Access Database.accdb;'
)
query = 'select * from P2CTT_2016_Plus0HHs'
df = pd.read_sql(query, conn)
return df
class TestMockDatabase(unittest.TestCase):
@mock.patch('directory1.script1.pyodbc.connect')
def test_mock_database(self, mock_con):
mock_con.return_value.execute.return_value.fetchall.side_effect = [('1', '2', '3'), (1, 2, 3)]
expected = pd.DataFrame({
'1': [
1
],
'2': [
1
],
'3': [
3
]
})
result = p2ctt_data_frame()
tm.assert_frame_equal(result, expected)
Я ожидаю, что результат будет соответствовать ожидаемому в качестве фрейма данных, но это не так.В настоящее время я получаю следующую ошибку:
AssertionError: DataFrame отличаются
Несоответствие формы DataFrame [left]: (0, 0) [right]: (1, 3)