【问题标题】:Pytest Vim Syntastic - Avoid redefinition warningPytest Vim Syntastic - 避免重新定义警告
【发布时间】:2018-05-08 16:54:14
【问题描述】:

我已经在 Vim 中为 Python 开发设置了 Syntastic。到目前为止它非常棒,但是在使用导入的 pytest.fixture 方法编写测试时,我得到了一些虚假错误。对于上下文,我在 Python 中使用 Flask。但是,请考虑以下 test.py 示例:

from common_stuff import app, client

def test_some_flask_think(client):
    # some test stuff

common_stuff.py:

@pytest.fixture
def client(app)
    return app.test_client()

如果它们在同一个文件中 - Syntastic 不会抱怨。但是,在一个单独的文件中 - 没有运气。每个实例中都列出了一个F811 错误。

很可能有人以前遇到过同样的事情。非常感谢这里的建议/指针。

谢谢!

【问题讨论】:

  • Syntastic 不关心文件的内容。 Syntastic 只是运行 linter 的简写:pep8、pyflakes 或您配置的任何其他内容。什么 linter 抱怨你的代码,当你在终端中运行它时,你如何配置它不这样做?
  • 如果 Syntastic 在这里纯粹运行 linter(使用 flake8),那么我希望在该输出中看到相同的错误。但是,情况并非如此。令我困惑的是import 清楚地说明了正在进口的东西。但假设它不足以用作夹具/测试方法的参数。至少我推测可能会发生这种情况。
  • 如果您将花费在推测上的一小部分精力转移到阅读手册上,您可以节省大量时间。然后,您将能够准确地分辨出什么合成器运行,并且您将能够更改它以满足您的需求。
  • 您对推测花费了多少时间的假设是不正确的。也许最多几分钟。在这里问的重点是,如果有人遇到完全相同的场景,可能会有一个简单的答案,可以教育其他人。是的,RTFM 有价值。然而,这并不是重点。如果有的话,那将是最后的努力。最后但同样重要的是,多一点礼貌会有很大帮助。

标签: python-3.x flask syntastic flake8


【解决方案1】:

回答我自己的问题,并希望善意教育可能遇到相同问题的其他人...

Syntastic 可以为 Python 使用各种 linter。我系统上配置的默认值恰好是flake8。我可以通过在 Vim 中激活 Python 缓冲区时运行 :SyntasticInfo 来确定这一点。

上述错误的代码为F811,也记录在Flake 8 error code docs 中。经过进一步研究,这很可能是bug in Flake8。但是,pytest 有一个更惯用的解决方案,在下面的SO post 中注明。 conftest.py 的具体示例可以在 this post 中找到。简而言之,common_stuff.py 可以重命名为conftest.py,删除导入,pytest 将相应地引导必要的测试装置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多