pytest asyncio не установлен тест пропущен
При тестировании следующего кода
@pytest.mark.asynico
async def test_handle_DATA(mocker):
handle_mock = mocker.MagicMock()
envelope_mock = mocker.MagicMock(mail_from="Test@From", rcpt_tos=["Test@To"], content=b"TestContent")
result = SendToDictHandler.handle_DATA(handle_mock, "TestServer", "TestSession", envelope_mock)
assert result == "250 Message accepted for delivery"
assert email_core.testing_emails_dict == {
"Test@To": {
"from": "Test@From",
"to": ["Test@To"],
"msg": "TestContent",
}
}
Предупреждение, которое я получаю при запуске pytest -vvv
в среде проектов:
PytestWarning: функции сопрограмм не поддерживаются изначально и были пропущены.
Вам необходимо установить подходящий плагин для вашей асинхронной среды, например:
pytest-asyncio
pytest-трио
pytest-tornasync
warnings.warn (PytestWarning (msg.format (pyfuncitem.nodeid)))
У меня установлен pytest-asyncio. Я проверил, запустив pytest --trace-config
в виртуальной среде моего проекта
================== начинается тестовая сессия ======================
платформа win32 - Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.9.0
используя: pytest-4.4.1 pylib-1.8.0
...
Setuptools
зарегистрированные плагины:
pytest-randomly-3.0.0 в \ lib \ site-packages \ pytest_randomly.py
pytest-mock-1.10.2 в \ lib \ site-packages \ pytest_mock.py
pytest-asyncio-0.10.0 в \lib\site-packages\pytest_asyncio\plugin.py
активные плагины:
pytest_mock: \ lib \ site-packages \ pytest_mock.py
asyncio: \lib\site-packages\pytest_asyncio\plugin.py
...
плагины: random-3.0.0, mock-1.10.2, asyncio-0.10.0
1 ответ
Я оставлю эту проблему, если кто-то еще столкнется с этой проблемой. Моей первоначальной проблемой была ошибка asyncio
в маркере: pytest.mark.asyncio
Как только я установил, что мне нужно дождаться ответа, мне пришлось изменить свой тест на следующий:
@staticmethod
@pytest.mark.asyncio
async def test_handle_DATA(mocker):
handle_mock = mocker.MagicMock()
envelope_mock = mocker.MagicMock(mail_from="Test@From", rcpt_tos=["Test@To"], content=b"TestContent")
assert "250 Message accepted for delivery" == await SendToDictHandler.handle_DATA(
handle_mock, "TestServer", "TestSession", envelope_mock
)
assert email_core.testing_emails_dict == {
"Test@To": {
"from": "Test@From",
"to": ["Test@To"],
"msg": "TestContent",
}
}