Я пытаюсь смоделировать метод, который возвращает список. После установки return_value
он по-прежнему возвращает объект Mock вместо списка, поэтому я не могу перебрать этот объект.
Пример функции, которую я хочу протестировать:
def func(db_engine):
query = f"SELECT * FROM table"
query_result = db_engine.execute(query).fetchall()
extracted_val = []
for res in query_result:
extracted_val.append(res[1])
return extracted_val
Пример теста:
def test_fun():
query = MagicMock()
query_res = [("name_1", "value_1"), ("name_2", "value_2")]
expected_vals = ["value_1", "value_2"]
db_engine = MagicMock()
db_engine.execute(query).fetchall().return_value = query_res
vals = func(db_engine)
assert expected_vals == vals
В итоге, db_engine.execute(query).fetchall()
должен вернуть список, поэтому я могу перебрать query_result
, но этого не происходит. Althou query_result
имеет правильные значения в атрибуте return_value
, я не могу перебрать его.