Запуск юнит-тестов параллельно с pytest? - PullRequest
0 голосов
/ 31 мая 2019

Как я могу распараллелить выполнение модульных тестов, написанных с помощью pytest?Какую тактику параллелизма я могу выбрать?

1 Ответ

3 голосов
/ 31 мая 2019

Для параллельного запуска pytests вам нужно установить pytest-xdist . Пожалуйста, ознакомьтесь с различными тактиками параллелизма, перечисленными ниже, вы можете использовать любую из них (однако я могу поспорить, что одна из них лучше всего подходит для вашего конкретного случая):

pip install pytest-xdist

# The most primitive case, sending tests to multiple CPUs:
pytest -n NUM

# Execute tests within 3 subprocesses.
pytest --dist=each --tx 3*popen//python=python3.6

# Execute tests in 3 forked subprocess. Won't work on windows.
pytest --dist=each --tx 3*popen//python=python3.6 --boxed

# Sending tests to the ssh slaves
pytest --dist=each --tx ssh=first_slave --tx ssh=seconds_slave --rsyncdir package package

# Sending tests to the socket server, link is available below.
python socketserver.py :8889 &
python socketserver.py :8890 &
pytest --dist=each --tx socket=localhost:8889 --tx socket=localhost:8890

Вы можете предоставить различные значения для параметра --dist (-d), который управляет распределением тестов по работникам, см. Документацию для получения дополнительной информации об использовании - dist .

ПРИМЕЧАНИЕ : После выполнения тестов socket_server.py не работает. Я предлагаю вам запустить сервер сокетов из отдельных окон терминала для целей отладки

Вы можете вводить более сложные потоки, например, запускать тесты внутри докер-контейнеров с запущенными сокет-серверами типа «pytest рабочие» и другой докер-контейнер, который связывается с ними и служит «pytest runner».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...