используя библиотеку 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
.

Нам может потребоваться некоторое время, чтобы научиться применять асинхронность в тестировании, но это того стоит, поскольку мы можем сэкономить значительное количество времени.

Надеюсь поможет~~

~~МИР~~