pytest asyncio не установлен тест пропущен - PullRequest
1 голос
/ 28 апреля 2019

При тестировании следующего кода

@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

...

плагинов: случайно-3.0.0, mock-1.10.2, asyncio-0.10.0

1 Ответ

0 голосов
/ 28 апреля 2019

Я оставлю этот вопрос, если кто-то еще столкнется с этой проблемой.Моя первоначальная проблема заключалась в том, что я неправильно набрал 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",
        }
    }
...