#python #pycharm #pytest #python-logging
Вопрос:
Вопрос
Как передать несколько параметров командной строки pytest в PyCharm?
Проблема
Установка параметров ведения журнала pytest --log-level=DEBUG --log-cli=True --log-cli-level=DEBUG
завершается ошибкой с конфигурацией запуска PyCharm.
Launching pytest with arguments --log-level=DEBUG --log-cli=True --log-cli-level=DEBUG ****/test_040_objective_sigmoid.py in ****
ERROR: usage: _jb_pytest_runner.py [options] [file_or_dir] [file_or_dir] [...]
_jb_pytest_runner.py: error: unrecognized arguments: --log-cli=True
inifile: None
rootdir: ****
С одним аргументом он запускается без ошибок.
Launching pytest with arguments --log-level=DEBUG ****test_040_objective_sigmoid.py in ****
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1 -- ****/bin/python
cachedir: .pytest_cache
rootdir: ****
plugins: pytest_check-1.0.1
collecting ... collected 5 items
При запуске pytest из командной строки параметры ведения журнала pytest работают.
$ pytest --log-level=DEBUG --log-cli=True --log-cli-level=DEBUG --verbose --cache-clear -x ${DIR}
===============================================================================================
test session starts
===============================================================================================
platform linux -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
...
настройка pytest в PyCharm
Рекомендации
Ответ №1:
pytest использует смесь одинарных -
и двойных --
дефисов, предшествующих параметрам командной строки, некоторые используются без дефиса. В вашем примере --log-level
используется только двойной дефис.
Остальные два варианта log_cli
и log_cli_level
написаны без какого-либо ведущего дефиса и имеют подчеркивание в середине имени. Эти два также являются «Параметрами конфигурации», и, возможно, потребуется добавить префикс -o
.
Полную ссылку можно найти во Флагах командной строки.
Так что вместо:
--log-level=DEBUG --log-cli=True --log-cli-level=DEBUG
пробовать:
--log-level=DEBUG -o log_cli=True -o log_cli_level=DEBUG
C:path_to your_projectvenvScriptspython.exe "C:Program FilesJetBrainsPyCharm 2019.3.2pluginspythonhelperspycharm_jb_pytest_runner.py" --path C:/path_to your_project/tests/basic_test.py -- --log-level=DEBUG -v -o log_cli=True -o log_cli_level=DEBUG
Testing started at 3:05 AM ...
Launching pytest with arguments --log-level=DEBUG -v -o log_cli=True -o log_cli_level=DEBUG C:/path_to your_project/tests/basic_test.py in C:path_to your_project
============================= test session starts =============================
platform win32 -- Python 3.9.0, pytest-6.2.2, py-1.10.0, pluggy-0.13.1 -- C:path_to your_projectvenvScriptspython.exe
cachedir: .pytest_cache
rootdir: C:path_to your_project, configfile: pytest.ini
collecting ... collected 1 item
tests/basic_test.py::test_validate_args PASSED [100%]
============================== 1 passed in 0.02s ==============================
Process finished with exit code 0