В моем исходном классе у меня есть следующие утверждения

    def main():
        conn = create_connection()
        cur = conn.cursor()
        cur.execute(query)

В моем тестовом классе я пытаюсь подтвердить "запрос", переданный методу cur.execute. Но я хотел бы поиздеваться над create_connection и объектом курсора, возвращаемым функцией cursor (). Я смог имитировать create_connection, используя приведенный ниже код. Как я могу исправить курсор и подтвердить значение запроса, переданного для выполнения функции?

    @patch(main.create_connection)
    def test_main(self,mock_conn):
0
Punter Vicky 22 Апр 2020 в 05:48

1 ответ

Лучший ответ

Поскольку созданный курсор уже является имитацией (например, каждый вызов фиктивного объекта создает другой фиктивный объект), вам не нужно ничего настраивать. Вы можете просто получить макет курсора:

@patch('main.create_connection')
def test_main(mock_conn):
    cursor = mock_conn.return_value.cursor.return_value
    main()
    cursor.execute.assert_called_once_with(query)
1
MrBean Bremen 22 Апр 2020 в 05:03