Вот test.py
, где с помощью mock_service
я издеваюсь над курсором и дБ, но каждый раз получаю 'function' object has no attribute 'cursor'
. Как правильно издеваться над объектом flask .g. Я сослался на эту статью
test.py
def not_a_db_hit():
print('I did not hit the DB')
return object()
class MyTestCase(unittest.TestCase):
@mock.patch('utils.configure_db') #configure_db returns database
@mock.patch('Service.g')
def test_insert_cricket_data(self, mock_service, mock_db):
with app.app_context():
body = {
'key1': 'value1'
}
headers = {
'Content-Type': 'application/json',
}
mock_db.return_value = not_a_db_hit
mock_service.cursor.return_value = not_a_db_hit
mock_service.cursor.execute.return_value = None
mock_service.db.commit.return_value = None
response = self.app.post('/insertvalue', headers=headers.items(), data=json.dumps(body))
print(response)
Вот мой Service.py
файл
from flask import g
@service.before_request
def before_request():
g.db = configure_db()
g.cursor = g.db.cursor()
@service.route('/insertvalue', methods=['POST'])
def in_request():
....
try:
g.cursor.execute(sql, main_values)
g.db.commit()
return make_response("Created", 201)
Любая помощь, приветствуется. Спасибо