นักพัฒนาที่ใช้ Neovim มีตัวเลือกใหม่สำหรับการปรับปรุงขั้นตอนการทดสอบ Python ให้มีประสิทธิภาพมากขึ้น ปลั๊กอิน pytest.nvim นำเสนอความสามารถในการทดสอบแบบผสานรวมโดยตรงภายในโปรแกรมแก้ไข Neovim พร้อมการรองรับ Docker ซึ่งแก้ไขปัญหาที่พบบ่อยสำหรับนักพัฒนาที่ต้องการรักษาขั้นตอนการทดสอบโดยไม่ต้องออกจากโปรแกรมแก้ไขของพวกเขา
การผสานรวม Docker สร้างการถกเถียงในชุมชน
คุณสมบัติการผสานรวม Docker ได้สร้างความสนใจอย่างมากในหมู่ผู้ใช้ แม้ว่าบางแง่มุมของการนำไปใช้จะทำให้เกิดคำถามบ้าง ปลั๊กอินไม่ได้จัดการวงจรชีวิตของคอนเทนเนอร์ แต่จะดำเนินการคำสั่ง pytest ภายในคอนเทนเนอร์ที่กำลังทำงานอยู่แล้ว เมื่อเปิดใช้งานการรองรับ Docker Compose ปลั๊กอินจะดึงเส้นทาง Docker จากการกำหนดค่าโวลุ่มในไฟล์ compose อย่างชาญฉลาด ตัวอย่างเช่น หากไฟล์ docker-compose.yml มีการแมปโวลุ่มเช่น app:/usr/src/app
ปลั๊กอินจะใช้ /usr/src/app
เป็นเส้นทาง Docker
สมาชิกชุมชนคนหนึ่งได้ชี้ให้เห็นถึงความสับสนที่อาจเกิดขึ้นในเอกสาร:
สิ่งนี้ทำอะไรในที่สุด? มันเริ่มต้นคอนเทนเนอร์หรือปรับคำสั่งทดสอบที่ทำงานโดยเพิ่มคำสั่ง Docker นำหน้า? ถ้าเป็นเช่นนั้น มีวิธีที่จะไม่ใช้คุณสมบัตินั้นเพื่อให้ยังคงใช้คำสั่ง Docker โดยไม่ให้มันจัดการวงจรชีวิตของคอนเทนเนอร์หรือไม่?
นักพัฒนาได้อธิบายว่า Docker รับผิดชอบเฉพาะการแมปเส้นทางและการดำเนินการคำสั่ง pytest ภายในคอนเทนเนอร์ที่กำลังทำงานอยู่ ซึ่งต้องเริ่มต้นแยกต่างหาก
การจัดการผลลัพธ์การทดสอบและวิธีการทางเลือก
ข้อพิจารณาสำคัญสำหรับเครื่องมือทดสอบใดๆ คือวิธีการจัดการผลลัพธ์ โดยเฉพาะอย่างยิ่งเมื่อการทดสอบสร้างเนื้อหา stdout จำนวนมาก ปลั๊กอินแก้ไขปัญหานี้ผ่านคำสั่ง :PytestOutput
ซึ่งแสดงผลลัพธ์ทั้งหมดจากการทดสอบที่ล้มเหลว อย่างไรก็ตาม นักพัฒนาได้ยอมรับแผนการที่จะนำการรองรับอาร์กิวเมนต์ที่กำหนดเอง เช่น ตัวเลือก -s
ของ pytest เพื่อแสดง stdout แม้ว่าการทดสอบจะผ่านก็ตาม
ที่น่าสนใจคือ การสนทนาได้เปิดเผยวิธีการทางเลือกสำหรับการทดสอบในสภาพแวดล้อม Vim ผู้ใช้บางรายได้แบ่งปันขั้นตอนการทำงานของพวกเขาโดยใช้คุณสมบัติ compiler
ที่มีอยู่ใน Vim ร่วมกับปลั๊กอินเช่น 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 จากบัฟเฟอร์ปัจจุบัน
การกำหนดคีย์และความยืดหยุ่นในการกำหนดค่า
ปลั๊กอินนำเสนอค่าเริ่มต้นที่เหมาะสมในขณะที่รักษาความยืดหยุ่นผ่านการกำหนดคีย์แมปที่ปรับแต่งได้ โดยค่าเริ่มต้น ผู้ใช้สามารถเรียกใช้ pytest สำหรับไฟล์ปัจจุบันด้วย <leader>TT
แนบ pytest กับบัฟเฟอร์ปัจจุบันด้วย <leader>Ta
และถอดออกด้วย <leader>Td
ระบบการกำหนดค่าอนุญาตทั้งการตั้งค่าแบบคงที่และการเรียกกลับแบบไดนามิก ซึ่งช่วยให้พฤติกรรมที่ตระหนักถึงบริบทขึ้นอยู่กับลักษณะของโปรเจค
สำหรับนักพัฒนาที่ทำงานในสภาพแวดล้อมที่แตกต่างกัน ความสามารถในการเปิดใช้งานการรองรับ Docker อย่างมีเงื่อนไขตามไดเรกทอรีการทำงานปัจจุบันเป็นคุณสมบัติที่มีประโยชน์เป็นพิเศษ สิ่งนี้ช่วยให้การเปลี่ยนผ่านระหว่างสภาพแวดล้อมการทดสอบแบบโลคัลและแบบคอนเทนเนอร์เป็นไปอย่างราบรื่นโดยไม่ต้องกำหนดค่าด้วยตนเอง
ในขณะที่โปรเจคยังคงพัฒนาต่อไป นักพัฒนาได้แสดงความเปิดกว้างต่อการมีส่วนร่วมและวางแผนที่จะเพิ่มคุณสมบัติเพิ่มเติมในอนาคต สำหรับนักพัฒนา Python ที่ลงทุนในระบบนิเวศ Neovim pytest.nvim นำเสนอการเพิ่มเติมที่น่าสนใจให้กับชุดเครื่องมือของพวกเขาที่เชื่อมช่องว่างระหว่างขั้นตอนการแก้ไขและการทดสอบ
อ้างอิง: Pytest.nvim