Совместим ли Python 3.9.6 с pytest 6.2.5?

Я пытаюсь протестировать представления и модели для Django REST API, написанные на pycharm, и установил для этого pytest. Я написал несколько тестов и когда я хотел запустить их, я получил следующее сообщение об ошибке:

ERROR: usage: _jb_pytest_runner.py [options] [file_or_dir] [file_or_dir] [...]
_jb_pytest_runner.py: error: unrecognized arguments: --cov=frontend --cov-report=html

Затем я проверил, правильно ли я установил pytest, и, похоже, что да. У меня установлен как Python 2.7.16, так и Python 3.9.6, но я использую Python 3. Может ли это быть проблемой совместимости или это что-то другое?

Я пробовал запускать тесты как через терминал с помощью py.test, так и просто в самой IDE. Я продолжаю получать одно и то же сообщение об ошибке.

Я попробовал следующий подход:

py.test: error: unrecognized arguments: --cov=ner_brands --cov-report=term-missing --cov-config

все же я получаю ту же ошибку.

ERROR: usage: _jb_pytest_runner.py [options] [file_or_dir] [file_or_dir] [...]
_jb_pytest_runner.py: error: unrecognized arguments: --cov=frontend --cov-report=html

Кто-нибудь знает, как я могу решить эту проблему?

Заранее спасибо.

Прежде всего, да, Python 3.9.6 совместим с pytest 6.2.5, однако, похоже, вам не хватает нескольких зависимостей. pytest - это один из многих различных пакетов Python, и вы, похоже, успешно установили его, так что вы уже на полпути.

Существует несколько различных плагинов покрытия, которые работают с pytest, и их нужно устанавливать отдельно. Вот два наиболее распространенных плагина покрытия для Python и pytest:

https://pypi.org/project/coverage/

https://pypi.org/project/pytest-cov/

Первый, coverage установлен с:

pip install coverage

Второй, pytest-cov установлен с:

pip install pytest-cov

Судя по вашей команде run, вы, по-видимому, хотите использовать pytest-cov. После установки вы можете проверить, что pytest имеет эти новые опции, вызвав pytest --help:

> pytest --help

...
coverage reporting with distributed testing support:
  --cov=[SOURCE]        Path or package name to measure during execution (multi-allowed). Use --cov= to
                        not do any source filtering and record everything.
  --cov-reset           Reset cov sources accumulated in options so far.
  --cov-report=TYPE     Type of report to generate: term, term-missing, annotate, html, xml (multi-
                        allowed). term, term-missing may be followed by ":skip-covered". annotate, html
                        and xml may be followed by ":DEST" where DEST specifies the output location.
                        Use --cov-report= to not generate any output.
  --cov-config=PATH     Config file for coverage. Default: .coveragerc
  --no-cov-on-fail      Do not report coverage if test run fails. Default: False
  --no-cov              Disable coverage report completely (useful for debuggers). Default: False
  --cov-fail-under=MIN  Fail if the total coverage is less than MIN.
...

Альтернативно, вы можете получить те же результаты, которые вы ищете, используя coverage:

coverage run -m pytest

coverage html

coverage report

И это также даст вам отчет о покрытии, даже если вы не используете pytest-cov опции.

Вернуться на верх