18

我一直在学习如何为我的 python 项目进行 tox 测试。

我有(应该是什么)一个相当标准的 tox 初始化文件,如下所示:

[tox]
envlist=py27,flake8
...
[testenv:flake8]
deps=flake8
commands=flake8 library # 'library' is temp. name of project

一切看起来都很正常,所有的测试都正常,甚至 flake8 输出都通过了(输出如下)。然而, tox 引发了一个 InvocationError (它对使用 pylint 进行测试也是如此)

flake8 recreate: /Users/shostakovich/projects/project_templates/library/.tox/flake8
flake8 installdeps: flake8
flake8 inst: /Users/shostakovich/projects/project_templates/library/.tox/dist/library-0.1.0.zip
flake8 installed: flake8==2.4.1,library==0.1.0,mccabe==0.3,pep8==1.5.7,pyflakes==0.8.1,wheel==0.24.0
library/__main__.py:12:1: F401 'os' imported but unused
library/__main__.py:13:1: F401 're' imported but unused
...
ERROR: InvocationError: '/Users/shostakovich/projects/project_templates/library/.tox/flake8/bin/flake8 library'

我在 MaxOSX 10.9.5 上运行 tox 2.0.2。如果我直接调用 flake8 或 pylint(flake8 的版本如上所示),问题就会消失。

4

2 回答 2

26

tox没有失败,它有效!

您的flake8源代码检查有发现,因此tox以失败退出,这就是您的测试结果。修复结果并完成!

您可以将flake8运行配置为忽略tox.ini. 来自flake8 文档

[flake8]
ignore = E226,E302,E41

还有更多您可能感兴趣的选项,例如select = ...用于将启用的代码检查列入白名单。

于 2015-07-09T20:56:02.613 回答
3

即使测试结果不完美,您也可以告诉 flake8 退出而不失败。这将抑制误导性的 InvocationError。只需添加到您的命令--exit-zero中,例如:

commands=flake8 library --exit-zero
于 2021-08-16T11:33:08.317 回答