py.test:错误:无法识别的参数:--cov = ner_brands --cov-report = term-missing --cov-config


69

当我尝试通过命令行运行测试时

py.test  file_name.py

我收到此错误:

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

我怎样才能解决这个问题?


如果您正在寻找apt命令apt install python-coverage
Reto Tschuppert

Answers:


136

如果要将--cov参数传递给pytest,则需要pytest-cov软件包,但默认情况下不应传递它。您是否正在使用py.test的修改版本?

pip install pytest-cov

将解决您的问题。


如果您仍然遇到此问题,请查看@Samuel Phan的回答。
AlexLordThorsen

1
这不能解决我的问题,也不能解决以下问题。我在Windows 7上使用Python 2.7.17,py.test == 3.2.2和pytest-COV == 2.5.1
斯尔詹Popić

6

对于使用CentOS 6的用户,其版本setuptools较旧,您还需要对其进行升级:

pip install pytest-cov
pip install --upgrade setuptools

安装后pip install pytest-cov

~ # py.test --version
This is pytest version 3.0.5, imported from /usr/lib/python2.6/site-packages/pytest.pyc

~ # pip install --upgrade setuptools
[...]
Successfully installed setuptools-30.3.0

~ # py.test --version
This is pytest version 3.0.5, imported from /usr/lib/python2.6/site-packages/pytest.pyc
setuptools registered plugins:
  pytest-cov-2.4.0 at /usr/lib/python2.6/site-packages/pytest_cov/plugin.py

3

如果此处的其他答案对您不起作用,则可能是在系统的其他位置安装了py.test。就我而言,我在虚拟环境中遇到了此处描述的问题,但事实证明pytest默认安装到我的系统中(该系统未安装pytest-cov)。

停用您的虚拟环境或启动新的Shell并运行以下命令进行确认:

pip3 freeze | grep pytest

(或者pip freeze | grep pytest如果您正在运行python2)

如果找到它,请尝试将其卸载,然后重新激活您的虚拟环境,然后重试。


1

sdonk的回答对我有所帮助。但是由于我使用pipenv,所以我不得不运行

pipenv install pytest_cov

0

原来我的版本不匹配。

我将版本更改为

pytest="*"
pytest-cov="*"

它开始工作。


0

在我的Ubuntu上,我也遇到了类似的问题,这是由于以下错误的二进制文件引起的pytest

py.test --version
This is pytest version 4.6.11, imported from /home/myhome/.local/lib/python2.7/site-packages/pytest.pyc

但是我当前的python setup(python --version)是3.7.7.。我不得不运行它:

python -m pytest --version
pytest 6.2.1

同样,您可以运行python -m pytest file_name.py或进行覆盖python -m pytest --cov=my_project tests/

我总是建议特别检查这一点,尤其是在有任何问题的情况下,最好直接运行它-m而不是pytest直接使用它,因为它很容易发生,它指向的版本与当前python环境中应使用的版本不同。(请参阅此处的类似说明。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.