«Попытка модульного тестирования моего кода с помощью unittest.mock python library». У меня есть код, который работает запросов к базе данных, очень похожие на это:Monkey patch cursor.execute() и close() или нет?
app.py:
from flask import g
import mysql.connector
@app.route('/')
def create_table():
g.db=mysql.connector.connect("credentials")
cursor = g.db.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS test(id INT NOT NULL PRIMARY KEY, name VARCHAR(40),email VARCHAR(40) NOT NULL)')
cursor.close()
g.db.close()
Я дразнил мой g.db, используя метод ниже, но здесь я борюсь с тем, как макет cursor.execute()
и cursor.close()
. Любая помощь будет оценена по достоинству.
def testtable():
with patch('app.mysql.connector') as mock_mysql_connector:
create_table()
print g.db
#mock execute and close#
На печать g.db
я получаю Mock имя и идентификатор, который я считаю, что означает g.db издевались, но я понятия не имею, как я должен издеваться execute()
и close()
.
Должен ли я делать исправление обезьяны?
Если да, укажите подсказку о том, как обезьяна нападает на них?
Если нет, то какой другой способ их издеваться?
Что вы хотите достичь? Это касается тестовых примеров (pytest и т. Д.?) – mstuebner
@ mstuebner Я выполняю модульное тестирование с использованием библиотеки unittest.mock python и для тестирования вместо того, чтобы удалять базу данных. Я хочу издеваться над моим соединением, execute() и close() – immrsteel