[英]How to pass multiple pytest command line options in the run configuration
Question问题
How to pass multiple pytest command line options in PyCharm?如何在 PyCharm 中传递多个 pytest 命令行选项?
Problem问题
Setting the pytest logging options --log-level=DEBUG --log-cli=True --log-cli-level=DEBUG
fails with the error with the PyCharm Run Configuration.设置 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: ****
With single argument, it runs without an error.使用单个参数,它运行没有错误。
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
When running the pytest from command line, the pytest logging options work.从命令行运行 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 setup in PyCharm PyCharm 中的 pytest 设置
References参考
pytest uses a mixture of single -
and double --
hyphens preceding the command line options, some are used without an hyphen. pytest 在命令行选项前混合使用单连字符和
-
连字符--
有些使用时没有连字符。 In your example only --log-level
uses a double hyphen.在您的示例中,仅
--log-level
使用双连字符。
The remaining two options log_cli
and log_cli_level
are written without any leading hyphen and have an underscore in the middle of the name.其余两个选项
log_cli
和log_cli_level
不带任何前导连字符,名称中间有一个下划线。 Those two are also "Configuration Options" and may need to be prefixed with -o
.这两个也是“配置选项” ,可能需要以
-o
为前缀。
A complete reference can be found in Command-line Flags .完整的参考可以在Command-line Flags中找到。
So instead of:所以而不是:
--log-level=DEBUG --log-cli=True --log-cli-level=DEBUG
try:尝试:
--log-level=DEBUG -o log_cli=True -o log_cli_level=DEBUG
C:\path_to your_project\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm 2019.3.2\plugins\python\helpers\pycharm\_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_project\venv\Scripts\python.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.