Как реализовать модульные тесты в приложении FastAPI, используя шаблон Controller-Service-Repository?Python

Программы на Python
Ответить
Anonymous
 Как реализовать модульные тесты в приложении FastAPI, используя шаблон Controller-Service-Repository?

Сообщение Anonymous »

У меня есть веб-служба FastAPI, использующая шаблон Controller-Service-Repository. Мне интересно, какой подход лучше всего подходит для реализации модульных тестов.
Вот моя текущая структура кода:
[Модель]

Код: Выделить всё

class UserInfo(SQLModel, table=True):
__tablename__ = 'user_info'
__table_args__ = {'schema': 'Auth'}
id: int | None = Field(default=None, primary_key=True)
name: str = Field(nullable=False)
username: str = Field(nullable=False)
email: str = Field(nullable=False)
role: str = Field(nullable=False)
tenant_id: int = Field(nullable=False)
activate: bool = Field(nullable=False)
[Репозиторий]

Код: Выделить всё

def get_user_info_repository(tenant_id: str) -> list[UserInfo]:
with Session(engine) as session:
statement = select(UserInfo).where(UserInfo.tenant_id == tenant_id)
result = session.exec(statement)
return result.all()
[Сервис]

Код: Выделить всё

def get_user_info_service(tenant_id: str) -> list[UserInfo]:
user_list = get_user_info_repository(tenant_id)
return user_list
[Схема]

Код: Выделить всё

class UserResponse(SQLModel):
username: str
name: str
email: str
role: str
tenant_id: str
activate: bool

class UserInfoResponse(SQLModel):
user_limit: int
users: list[UserResponse]
[Контроллер]

Код: Выделить всё

@app.get("/user_info", response_model=UserInfoResponse)
def user_info():
response = get_user_info_service("Test_Account")
return UserInfoResponse(users=response)
Мои вопросы:
  • Должен ли я писать модульные тесты для каждого уровня (контроллер, сервис, репозиторий) и макетировать их зависимости? Или достаточно просто протестировать уровень контроллера с помощью TestClient?
  • Должны ли модульные тесты включать сценарии межуровневого тестирования или избегать их? (Например, следует ли мне тестировать контроллер+сервис вместе или всегда тестировать их отдельно?)
  • Поскольку мой уровень сервиса просто передает данные без какой-либо бизнес-логики, следует ли мне писать модульный тестовый пример? за это?


Подробнее здесь: https://stackoverflow.com/questions/793 ... service-re
Ответить

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

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

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

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

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