gpt4 book ai didi

python - 在 zsh 中获取 pytest 自动完成

转载 作者:行者123 更新时间:2023-12-01 08:28:40 26 4
gpt4 key购买 nike

这个问题可能更适合 super 用户 - 如果是这样,请告诉我,我会改变它。

我使用 zsh 并经常从命令行运行 pytest。一种非常常见的情况是我需要运行特定的测试(或类的子测试)。

前者看起来像

pytest test/test_foo_file.py::test_foo_function

后者类似于

pytest test/test_foo_file.py::FooClassTest::test_specific_functionity

写出整个精确的类和测试名称有点痛苦,而且这对于自动完成或某种模糊搜索来说似乎已经成熟了。我无法通过我的研究来实现这一目标——有人有什么建议吗?

如果我可以以任何方式更具体,请告诉我。

最佳答案

免责声明:我不是 zsh 用户,但该方法与 bash 完成的自定义非常相似:

  1. 创建自定义完成文件,例如

    $ mkdir ~/.zsh-completions
    $ touch ~/.zsh-completions/_pytest
  2. ~/.zsh-completions/_pytest内,编写补全函数:

    #compdef pytest

    _pytest_complete() {
    local curcontext="$curcontext" state line
    typeset -A opt_args
    compadd "$@" $( pytest --collect-only -q | head -n -2)
    }

    _pytest_complete "$@"
  3. 调整 .zshrc 以包含自定义完成,例如

    fpath=(~/.zsh-completions $fpath)
    autoload -U compinit
    compinit
    zstyle ':completion:*' menu select=2

重新启动外壳。现在您应该在选项卡完成时获得单个测试选择:

enter image description here

这里的关键命令是

$ pytest --collect-only -q | head -n -2

它收集当前目录中的测试并列出它们的名称,准备作为命令行参数传递。

关于python - 在 zsh 中获取 pytest 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54044327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com