Как я могу имитировать возвращаемое значение для метода в классе, который использует диспетчер контекстаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу имитировать возвращаемое значение для метода в классе, который использует диспетчер контекста

Сообщение Anonymous »

У меня есть модуль базы данных data.py с классом Database, например:
from someDatabase import theClient

class DatabaseClient:

def __init__(self):
self.connection = None

def __enter__(self):
self.connection = self.database_connection()
return self

def __exit__(self, exc_type, exc_value, traceback):
if self.connection:
self.connection.close()

def database_connection(self):
client = theClient()
return client

def database_query(self, table: str, query: str):
response = self.connection.search(
body = query,
table = table
)
return response

Затем в моем приложении Flask у меня есть маршрут:
from app.utils.Database import Database
from app.queries import thequery
from flask import Blueprint, jsonify

api = Blueprint('the_api', __name__)

@api.route("/api/this/route", methods=["GET"])
def get_some_stuff(**kwargs):
try:

# get input params from request

with Database() as db:
response = db.database_query("some_table", thequery)

# transform the response object

return jsonify(response), 200
except Exception as e:
raise e


Я пытаюсь понять, как я могу исправить DatabaseClient или, точнее, как мне исправить метод data_query() для возврата у меня есть некоторые sample_data.
Я хотел бы установить возвращаемое значение метода как-то, а затем вызвать маршрут в тесте, как показано ниже. Я пытаюсь использовать только pytest, а не смешивать его с unittest, если это возможно?
import pytest

from app import app

from tests.sample_data.api_responses.get_some_stuff import (
get_some_stuff_api_response
)

from tests.sample_data.query_responses.get_some_stuff import (
get_some_stuff_query_response
)

@pytest.fixture
def client():
with app.test_client() as client:
yield client

def test_get_some_stuff(client):

# What is the correct patch here to set the return value of Database.database_query?
# patch so it's equal to +get_some_stuff_query_response+

# Call the route
response = client.get(
f"/api/this/route",
)

assert response.status_code == 200
data = response.json
assert data == get_some_stuff_api_response


Подробнее здесь: https://stackoverflow.com/questions/783 ... ntext-mana
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»