Перемешанный курсор не возвращает значения, а только смоделированный объект - PullRequest
0 голосов
/ 17 мая 2019

модуль: работа

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 выполнял свою обычную работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...