这个问题可能更适合于超级用户-如果是这种情况,请告诉我,我将予以解决。
我使用zsh并经常从命令行运行pytest。一个非常普遍的情况是我需要运行特定的测试(或类的子测试)。
前者看起来像
pytest test/test_foo_file.py::test_foo_function
后者就像
pytest test/test_foo_file.py::FooClassTest::test_specific_functionality
写出整个确切的类和测试名称有点痛苦,对于某种形式的自动补全或模糊搜索来说似乎已经成熟了。我无法通过研究发现实现这一目标-有人有任何建议吗?
让我知道我是否可以以任何方式更加具体。
免责声明:我不是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
它将在当前目录中收集测试,并列出准备好作为命令行参数传递的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句