使用 Neovim 的開發者現在有了一個簡化 Python 測試工作流程的新選擇。Pytest.nvim 外掛提供了直接在 Neovim 編輯器中整合的測試功能,並完全支援 Docker,解決了開發者希望在不離開編輯器的情況下維持測試流程的常見痛點。
Docker 整合引發社群討論
Docker 整合功能引起了使用者的極大興趣,儘管其實現的某些方面引發了一些疑問。該外掛不管理容器生命週期,而是在已執行的容器中執行 pytest 命令。當啟用 Docker Compose 支援時,外掛會從 compose 檔案中的卷配置智慧檢索 Docker 路徑。例如,如果 docker-compose.yml 包含像 app:/usr/src/app
這樣的卷對映,外掛將使用 /usr/src/app
作為 Docker 路徑。
一位社群成員指出文件中可能存在的混淆:
「這最終是做什麼的?它是啟動容器還是透過新增 Docker 命令字首來調整執行的測試命令?如果是這樣,有沒有辦法選擇不讓它管理容器生命週期,但仍然使用 Docker 命令?」
開發者澄清說,Docker 只負責路徑對映和在執行中的容器內執行 pytest 命令,容器必須單獨啟動。
測試輸出處理和替代方法
對於任何測試工具來說,一個重要的考慮因素是如何處理輸出,特別是當測試生成大量標準輸出內容時。該外掛透過 :PytestOutput
命令解決了這個問題,該命令顯示所有失敗測試的輸出。然而,開發者已經承認計劃實現對自定義引數的支援,例如 pytest 的 -s
標誌,以便在測試透過時也顯示標準輸出。
有趣的是,討論揭示了在 Vim 環境中測試的替代方法。一些使用者分享了他們使用 Vim 內建的 compiler
功能結合 vim-compiler-pytest
和 vim-dispatch
等外掛的工作流程,展示了社群為解決類似問題而開發的各種解決方案。
pytest.nvim 的主要特點
- 透過
:Pytest
命令直接在 Neovim 中執行 pytest - 使用
:PytestOutput
檢視測試輸出 - 透過
:PytestAttach
和:PytestDetach
在儲存時自動執行測試 - 支援 Docker 和 Docker Compose
- 可自定義鍵對映
- 預設鍵繫結:
<leader>TT
- 為當前檔案執行 pytest<leader>Ta
- 將 pytest 附加到當前緩衝區<leader>Td
- 從當前緩衝區分離 pytest
按鍵對映和配置靈活性
該外掛提供了合理的預設設定,同時透過可自定義的按鍵對映保持靈活性。預設情況下,使用者可以使用 <leader>TT
運行當前檔案的 pytest,使用 <leader>Ta
將 pytest 附加到當前緩衝區,使用 <leader>Td
將其分離。配置系統允許靜態設定和動態回撥,根據專案特性實現上下文感知行為。
對於在不同環境中工作的開發者來說,能夠根據當前工作目錄有條件地啟用 Docker 支援是一個特別有用的功能。這允許在本地和容器化測試環境之間無縫過渡,無需手動重新配置。
隨著專案的不斷發展,開發者表示歡迎貢獻並計劃在未來新增更多功能。對於投身於 Neovim 生態系統的 Python 開發者來說,pytest.nvim 為他們的工具箱提供了一個有前途的補充,彌合了編輯和測試工作流程之間的差距。
參考:Pytest.nvim