限制py.test仅运行pylint而不运行unittests

时间:2019-02-07 20:07:02

标签: python unit-testing pytest pylint

我正在尝试运行py.test并仅执行pylint,而不执行单元测试。

此页面上的文档表明您可以做到:

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

  

您可以通过键入以下内容来限制测试运行,使其仅执行pylint检查,而不执行任何其他测试:

  py.test --pylint -m pylint

但是当我确切地运行该命令时,我仍然会从py.test找到的单元测试中得到错误。整理过程似乎按预期运行,然后报告了单元测试文件中的许多错误。这似乎与文档相反。

py.test --version表明我正在使用0.14.0

$ py.test --version
This is pytest version 4.0.0, imported from /usr/local/lib/python3.6/dist-packages/pytest.py
setuptools registered plugins:
  pytest-pylint-0.14.0 at /usr/local/lib/python3.6/dist-packages/pytest_pylint.py

2 个答案:

答案 0 :(得分:1)

这可能不是您要找的答案,但是请考虑使用Prospector。

它是一些Python linting库(包括pylint)的包装,它可以立即生成xUnit报告。

请参见https://prospector.readthedocs.io/en/master/usage.html#output-format

答案 1 :(得分:0)

代表评论进行回答:

  

您是否在单元测试或实际测试中遇到有关代码样式的linter错误   单元测试失败? – Gediminas 2月7日20:12

     

好问题,主要是模块导入错误,   虽然易于解决,但不应在以下位置运行的单元测试文件   所有。我们仅在詹金斯的这一部分中需要皮棉错误   管道。我们将定义管道的另一部分来运行单元测试   正确地。 – David Parks 2月7日20:14

“>主要是模块导入错误,即unittest文件中的pythonpath问题,尽管很容易解决,但根本不应该运行。” -我认为这里的解释是pytest正在尝试加载单元测试模块,但实际上不会运行它们。 -m pylint是标记过滤器,这意味着仅必须运行标记为“ pylint”的测试。因此,pytest必须仔细检查所有测试并检查其标记。我猜想解决import / pythonpath问题将解决该问题,并且py.test --pylint -m pylint的行为将与预期的一样。 – Gediminas 2月7日20:47