используя библиотеку pytest-asyncio.
Вы тестируете много функций, а они работают очень медленно. Как вы можете запускать тесты быстрее и использовать несколько ядер вашего компьютера? Один из способов начать параллельную реализацию тестов. Ниже приведены примеры для языка Python с использованием библиотеки pytest-asyncio.
Примечание. Вы можете ознакомиться с этим руководством, чтобы узнать больше об асинхронности в Python.
https://gist.github.com/cuongld2/d1ab810c776e6ff2e5fa788c86f4dfd8
Мы сделаем http-запрос к github api и dev.to асинхронным способом. Что это значит? Это означает, что вызов http-запроса и github api будет вызван сразу (не дожидаясь возврата результата). Затем мы ждем 2 секунды и используем ключевое слово «ожидание», чтобы дождаться возврата запроса.
Выполнение этого теста занимает 2,05 секунды.
pytest test_rest_loop.py -s ================================================================================================== test session starts ================================================================================================== platform win32 -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 rootdir: C:\Projects\Personal\pytest-asyncio plugins: anyio-3.3.0, asyncio-0.15.1 collected 1 item test_rest_loop.py 2.055479049682617 .
в то время как если мы тестируем синхронно
занимает 3,64 секунды
$ pytest test_rest_without_async.py -s ================================================================================================== test session starts ================================================================================================== platform win32 -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 rootdir: C:\Projects\Personal\pytest-asyncio plugins: anyio-3.3.0, asyncio-0.15.1 collected 1 item test_rest_without_async.py 1630083171.4724483 3.646817922592163 .
Нам может потребоваться некоторое время, чтобы научиться применять асинхронность в тестировании, но это того стоит, поскольку мы можем сэкономить значительное количество времени.
Надеюсь поможет~~
~~МИР~~