модуль: работа
import db_connector_file
def run():
con=db_connector_file.My_DB_conn()
res=con.execute('select * from table_name')
print res.fetchone()
модуль: проверка
def mock_execute(sql):
res = mock.Mock(spec=cx_Oracle.Cursor)
if 'table_name' in sql:
res._next_result=[(2,)]
else:
res._next_result=[(10,)]
return res
with mock.patch('work.db_connector_file.My_DB_conn.execute', side_effect=mock_execute):
import work
work.run()
когда я запускаю тест модуля, я получаю значение ниже
Mock name='mock.fetchone()' id='69673144'
Process finished with exit code 0
Хотя я ожидаю, что он вернется
[(2,)]
есть способ, которым я могу сделать эту работу и вернуть не фиктивный, а насмешливый со значениями дляпроверка.
или
есть способ, пока mocking, я пропускаю параметр 'spec =' и явно возвращаю ora-курсор со значениями в явном виде, чтобы fetchone выполнял свою обычную работу