Проблема с имитацией при тестировании: конечная точка пересчитывает значение вместо использования имитации возвратаPython

Программы на Python
Ответить
Anonymous
 Проблема с имитацией при тестировании: конечная точка пересчитывает значение вместо использования имитации возврата

Сообщение Anonymous »

Я относительно новичок в тестировании макетов, и у меня возникла проблема с моим подходом к тестированию. У меня есть конечная точка в моем приложении FastAPI, которая взаимодействует со службой кэша памяти:

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

@memcache_router.post(
"/cache/item",
tags=["Memcache"],
description="Create Memcache item.",
dependencies=[Depends(HasPermissions(["appAccess"]))],
)
async def post_memcache_items_by_id(cache_item: Annotated[str, Form(...)]):

item_id = create_memcache_item(memcache_item=cache_item)

return item_id
Кроме того, у меня есть метод создания элемента кэша памяти:

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

def create_memcache_item(memcache_item: str) -> str:

milliseconds = str(round(time() * 1000))
client = base.Client(("localhost", 11211))
client.set(milliseconds, memcache_item)
return milliseconds
Чтобы избежать проблем, вызванных отсутствием службы memcache в моем конвейере тестирования, я пытаюсь использовать макетирование. Ниже приведена моя тестовая реализация:

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

client = TestClient(app)
client.headers = token_headers()

class TestPostMemcacheItemById:
def test_post_memcache_item_by_id_valid_data(self):
"""
Test post Memcache Item By Id Endpoint with valid data
"""
endpoint = f"{API_BASE_URL}/cache/item/"
metadata = {"cache_item": "test"}
milliseconds = str(round(time() * 1000))

with patch("api.crud.memcached.create.create_memcache_item") as create_memcache_function:
create_memcache_function.return_value = milliseconds

response = client.post(endpoint, data=metadata)

create_memcache_function.assert_called()
assert response.status_code == status.HTTP_200_OK
assert response.json() == milliseconds

Я ожидаю, что значение, возвращаемое create_memcache_item, должно быть постоянным во время теста. Однако похоже, что конечная точка пересчитывает это значение вместо использования имитируемого возвращаемого значения. Что мне здесь не хватает? Мне не удалось определить проблему.

Подробнее здесь: https://stackoverflow.com/questions/780 ... using-mock
Ответить

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

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

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

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

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