这个问题可能更适合于超级用户-如果是这种情况,请告诉我,我会予以解决。
我使用zsh并经常从命令行运行pytest。一种非常普遍的情况是我需要运行特定的测试(或类的子测试)。
前者看起来像
pytest test/test_foo_file.py::test_foo_function
和后者类似
pytest test/test_foo_file.py::FooClassTest::test_specific_functionality
写出完整的确切类和测试名称有点痛苦,对于某种形式的自动完成或模糊搜索来说,这似乎已经成熟了。我无法通过研究发现实现这一目标-有人有任何建议吗?
让我知道我是否可以以任何方式更加具体。
答案 0 :(得分:1)
免责声明:我不是zsh
用户,但是该方法与自定义bash补全非常相似:
创建自定义完成文件,例如
$ mkdir ~/.zsh-completions
$ touch ~/.zsh-completions/_pytest
在~/.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 "$@"
调整.zshrc
以包括自定义补全,例如
fpath=(~/.zsh-completions $fpath)
autoload -U compinit
compinit
zstyle ':completion:*' menu select=2
重新启动外壳。现在,您应该在选项卡完成时获得单个测试选择:
这里的关键命令是
$ pytest --collect-only -q | head -n -2
它将测试收集到当前目录中,并列出准备好作为命令行参数传递的名称。