Как передать несколько параметров командной строки pytest в конфигурации запуска

#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