用于 Neovim 的 Pytest 插件
该文章介绍了一个用于在 Neovim 中运行 Python 测试的插件 `pytest.nvim`。它支持 Docker 集成,并提供快速上手指南,包括安装、使用方法和默认配置。用户可以通过 `:Pytest` 命令运行测试,并使用快捷键。文章还展示了如何启用/禁用 Docker 支持,以及自定义配置选项。该插件目前处于开发阶段,欢迎贡献。
关于项目
使用 pytest
集成到 Neovim 中的 Python 测试插件。包含 Docker 支持。本项目正在开发中,未来会添加更多功能,欢迎贡献。
快速上手
以下说明将帮助你在 Neovim 环境中设置和使用 pytest.nvim
。
前置条件
- Neovim 0.5.0 或更高版本
- 你的环境中已安装
pytest
(pip install pytest
)
安装
- 使用你喜欢的插件管理器安装
pytest.nvim
插件:
Lazyvim:
{
"richardhapb/pytest.nvim",
opts = {}
}
Packer:
use {
"richardhapb/pytest.nvim",
opt = true
}
Vim-Plug:
Plug 'richardhapb/pytest.nvim'
使用方法
- 如果尚未加载,请在 Neovim 配置文件中加载
pytest
插件。例如:
require('pytest').setup()
-
使用
:Pytest
命令在当前 buffer 中运行测试。- 检查整个 buffer:
:Pytest
* 检查测试输出:
:PytestOutput
* 将测试附加到当前 buffer,这会在保存时运行测试:
:PytestAttach
* 从当前 buffer 中分离测试:
:PytestDetach
* 启用 Docker 支持:
:PytestEnableDocker
* 禁用 Docker 支持:
:PytestDisableDocker
运行 :Pytest
的默认快捷键是 <leader>T
。
默认配置
插件提供以下默认键位映射:
<leader>TT
- 运行当前文件的 pytest 测试 (普通模式)<leader>Ta
- 将 pytest 附加到当前 buffer (普通模式)<leader>Td
- 从当前 buffer 中分离 pytest (普通模式)
以下是默认设置,不一定需要设置,但你可以在配置文件中更改这些设置。
require 'pytest'.setup {
docker = {
enabled = true, -- 启用 Docker 支持
container = 'app-1', -- 运行测试的容器
docker_path = '/usr/src/app', -- 这是默认路径,如果使用 docker compose,则从 docker compose 文件中获取
docker_path_prefix = 'app', -- 这是本地 cwd 中路径的前缀,例如:root/app/<docker_app_content>
docker_compose_file = 'docker-compose.yml', -- 这是默认的 docker compose 文件名
docker_compose_service = 'app', -- 用于在 docker compose 中查找 docker 路径
enable_docker_compose = true, -- 启用 docker compose 支持
},
-- 你可以使用自定义键位映射覆盖此回调,
-- 这会在打开 Python 文件时调用,并将 buffer 编号作为参数传递
keymaps_callback = function(bufnr)
vim.keymap.set('n', '<leader>TT', '<CMD>Pytest<CR>', { buffer = bufnr, desc = 'Run Pytest' })
vim.keymap.set('n', '<leader>Ta', '<CMD>PytestAttach<CR>', { buffer = bufnr, desc = 'Attach Pytest to buffer' })
vim.keymap.set('n', '<leader>Td', '<CMD>PytestDetach<CR>', { buffer = bufnr, desc = 'Detach Pytest' })
end
}
选项可以是回调函数,例如:
require 'pytest'.setup {
docker = {
enabled = function()
return vim.fn.getcwd():match(".*/(.*)$") == "work" -- 仅当 cwd 的最后一个目录是 "work" 时才启用 Docker
end,
container = function()
local app = utils.get_my_awesome_app()
return app .. '-version-2'
end
},
}
关于
用于 Python 测试的 Neovim 插件