如何在Bash中实现pytest命令自动补全功能?
Bash下实现pytest测试用例自动补全
你用的是zsh专属的补全脚本,compadd是zsh独有的补全命令,Bash不支持,所以会报compadd: command not found错误。要在Bash里实现pytest的测试用例自动补全,得用Bash原生的补全机制来写脚本:
步骤1:编写Bash补全函数
将以下代码添加到你的~/.bashrc或~/.bash_profile文件中:
_pytest_completion() { local cur="${COMP_WORDS[COMP_CWORD]}" # 处理test_file.py::这种需要补全测试用例的场景 if [[ "$cur" == *:: ]]; then # 提取文件名(去掉末尾的::) local test_file="${cur%::}" # 收集该文件下的所有测试用例,过滤出有效条目 local test_cases=$(pytest --collect-only -q "$test_file" | grep -E '^test_' | head -n -2) # 生成补全候选,自动拼接当前输入的前缀(即test_file::) COMPREPLY=($(compgen -W "$test_cases" -- "${cur}")) else # 普通场景:补全文件或目录 COMPREPLY=($(compgen -f -- "$cur")) fi } # 给pytest命令绑定补全函数 complete -F _pytest_completion pytest
步骤2:生效配置
执行以下命令让配置立即生效:
source ~/.bashrc
测试效果
在有test_foo.py(包含test_case_simple测试用例)的目录下,输入:
pytest test_foo.py::
按下Tab键,就会自动补全出test_case_simple,最终变成:
pytest test_foo.py::test_case_simple
内容的提问来源于stack exchange,提问作者Bojian Zheng
相关产品推荐
相关产品推荐

