|
10 | 10 | class TestAsyncMethods: |
11 | 11 |
|
12 | 12 | @pytest.mark.asyncio |
13 | | - @patch("whatsapp_api_client_python.API.Session.request", new_callable=AsyncMock) |
14 | | - async def test_async_methods(self, mock_raw_request): |
15 | | - # Создаем мок-ответы с разными кодами статуса |
16 | | - mock_responses = [ |
17 | | - Mock(code=200, data={"example": {"key": "value"}}), |
18 | | - Mock(code=401, data={"error": "Unauthorized"}), |
19 | | - Mock(code=403, data={"error": "Forbidden"}) |
20 | | - ] |
| 13 | + async def test_single_async_method(self): |
| 14 | + """Тестируем только один метод для упрощения отладки""" |
| 15 | + mock_response = AsyncMock() |
| 16 | + mock_response.code = 200 |
| 17 | + mock_response.data = {"example": {"key": "value"}} |
21 | 18 |
|
22 | | - # Настраиваем мок чтобы он возвращал разные ответы по очереди |
23 | | - mock_raw_request.side_effect = mock_responses * 20 # Умножаем чтобы хватило на все вызовы |
24 | | - |
25 | | - methods_coroutines = [] |
26 | | - methods_coroutines.extend(self.account_methods()) |
27 | | - methods_coroutines.extend(self.group_methods()) |
28 | | - methods_coroutines.extend(self.status_methods()) |
29 | | - methods_coroutines.extend(self.log_methods()) |
30 | | - methods_coroutines.extend(self.queue_methods()) |
31 | | - methods_coroutines.extend(self.read_mark_methods()) |
32 | | - methods_coroutines.extend(self.receiving_methods()) |
33 | | - methods_coroutines.extend(self.sending_methods()) |
34 | | - methods_coroutines.extend(self.service_methods()) |
35 | | - |
36 | | - responses = [] |
37 | | - for coro in methods_coroutines: |
38 | | - response = await coro |
39 | | - responses.append(response) |
40 | | - |
41 | | - # Проверяем что все ответы имеют допустимые коды статуса |
42 | | - for response in responses: |
43 | | - assert response.code in [200, 401, 403] |
44 | | - # Для кода 200 проверяем данные, для 401/403 проверяем наличие ошибки |
45 | | - if response.code == 200: |
| 19 | + with patch("whatsapp_api_client_python.API.Session.request", return_value=mock_response) as mock_request: |
| 20 | + # Тестируем только один метод |
| 21 | + response = await api.account.getSettingsAsync() |
| 22 | + |
| 23 | + assert response.code == 200 |
| 24 | + assert response.data == {"example": {"key": "value"}} |
| 25 | + assert mock_request.call_count == 1 |
| 26 | + |
| 27 | + @pytest.mark.asyncio |
| 28 | + async def test_async_methods(self): |
| 29 | + """Полный тест всех методов""" |
| 30 | + # Создаем простой асинхронный мок |
| 31 | + async def mock_request(*args, **kwargs): |
| 32 | + mock_response = Mock() |
| 33 | + mock_response.code = 200 |
| 34 | + mock_response.data = {"example": {"key": "value"}} |
| 35 | + return mock_response |
| 36 | + |
| 37 | + with patch("whatsapp_api_client_python.API.Session.request", side_effect=mock_request): |
| 38 | + methods_coroutines = [] |
| 39 | + methods_coroutines.extend(self.account_methods()) |
| 40 | + methods_coroutines.extend(self.group_methods()) |
| 41 | + methods_coroutines.extend(self.status_methods()) |
| 42 | + methods_coroutines.extend(self.log_methods()) |
| 43 | + methods_coroutines.extend(self.queue_methods()) |
| 44 | + methods_coroutines.extend(self.read_mark_methods()) |
| 45 | + methods_coroutines.extend(self.receiving_methods()) |
| 46 | + methods_coroutines.extend(self.sending_methods()) |
| 47 | + methods_coroutines.extend(self.service_methods()) |
| 48 | + |
| 49 | + responses = [] |
| 50 | + for coro in methods_coroutines: |
| 51 | + response = await coro |
| 52 | + responses.append(response) |
| 53 | + |
| 54 | + for response in responses: |
| 55 | + assert response.code == 200 |
46 | 56 | assert response.data == {"example": {"key": "value"}} |
47 | | - else: |
48 | | - assert "error" in response.data |
49 | | - |
50 | | - assert mock_raw_request.call_count == len(responses) |
51 | 57 |
|
52 | 58 | def account_methods(self) -> typing.List: |
53 | 59 | return [ |
|
0 commit comments