from unittest.mock import AsyncMock, MagicMock import pytest import app app.sent_images = set() # сброс уже отправленных изображений @pytest.mark.asyncio async def test_fetch_image_success(): fake_tags = ["gay"] # Ответ от API mock_response_data = { "images": [ { "representations": {"full": "http://example.com/img.jpg"}, "uploader": "tester", "view_url": "http://derpibooru.org/img/1", "tags": ["gay", "pony"] } ] } # Мок объекта ответа, поддерживающий async with mock_response = AsyncMock() mock_response.status = 200 mock_response.json = AsyncMock(return_value=mock_response_data) # Мок объекта session.get, который возвращает mock_response через __aenter__ mock_session = MagicMock() mock_session.get.return_value.__aenter__.return_value = mock_response url, author, source, img_tags = await app.fetch_image(mock_session, fake_tags) assert url == "http://example.com/img.jpg" assert author == "tester" assert source == "http://derpibooru.org/img/1" assert "gay" in img_tags