当我尝试通过命令行运行测试时
py.test file_name.py
我收到此错误:
py.test: error: unrecognized arguments: --cov=ner_brands --cov-report=term-missing --cov-config
我怎样才能解决这个问题?
Answers:
如果要将--cov参数传递给pytest,则需要pytest-cov软件包,但默认情况下不应传递它。您是否正在使用py.test的修改版本?
pip install pytest-cov
将解决您的问题。
对于使用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
如果此处的其他答案对您不起作用,则可能是在系统的其他位置安装了py.test。就我而言,我在虚拟环境中遇到了此处描述的问题,但事实证明pytest默认安装到我的系统中(该系统未安装pytest-cov)。
停用您的虚拟环境或启动新的Shell并运行以下命令进行确认:
pip3 freeze | grep pytest
(或者pip freeze | grep pytest
如果您正在运行python2)
如果找到它,请尝试将其卸载,然后重新激活您的虚拟环境,然后重试。
原来我的版本不匹配。
我将版本更改为
pytest="*"
pytest-cov="*"
它开始工作。
在我的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环境中应使用的版本不同。(请参阅此处的类似说明。)