简体   繁体   English

如何在运行配置中传递多个 pytest 命令行选项

[英]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_clilog_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM