Hoppscotch เป็นระบบนิเวศ API แบบโอเพ่นซอร์ส ประกอบด้วยเว็บแอป เดสก์ท็อปแอป CLI และแบ็กเอนด์ที่สามารถโฮสต์ด้วยตนเองได้ ซึ่งมักถูกอธิบายว่าเป็นทางเลือกโอเพ่นซอร์สแทน Postman และ Insomnia Hoppscotch CLI เป็นส่วนที่นำคอลเลกชันที่คุณสร้างขึ้นในระบบนิเวศนั้นมาใช้งานจากเทอร์มินัล ซึ่งเป็นสิ่งที่คุณต้องการสำหรับการทำงานแบบ CI/CD
คู่มือนี้จะอธิบายว่า Hoppscotch CLI คืออะไร วิธีการติดตั้ง และวิธีการทำงานของคำสั่ง hopp test พร้อมด้วยแฟล็กจริงและตัวอย่าง CI ที่ใช้งานได้จริง หากคุณกำลังพิจารณาเปรียบเทียบกับรันเนอร์อื่น ๆ โพสต์ ทางเลือกที่ดีที่สุดสำหรับ Hoppscotch CLI จะเปรียบเทียบตัวเลือกต่าง ๆ และ Apidog CLI vs Hoppscotch CLI เป็นการเปรียบเทียบโดยตรง
Hoppscotch CLI คืออะไร
Hoppscotch CLI มาในรูปแบบของแพ็กเกจ npm @hoppscotch/cli หน้าที่ของมันนั้นเฉพาะเจาะจงและมีประโยชน์: คือการนำคอลเลกชัน Hoppscotch มาเรียกใช้ทุกคำขอในนั้น ประมวลผลสคริปต์ทดสอบที่แนบมากับคำขอเหล่านั้น และออกจากระบบด้วยรหัสผ่าน/ไม่ผ่านที่ไปป์ไลน์ของคุณสามารถอ่านได้

สิ่งนี้ทำให้มันเป็น collection runner ซึ่งอยู่ในหมวดหมู่เดียวกับ Newman สำหรับ Postman หรือ inso สำหรับ Insomnia มันไม่ได้ออกแบบ API, จำลอง endpoint หรือสร้างเอกสาร มันรันคำขอและตรวจสอบการยืนยัน สำหรับเครื่องมือฟรี โอเพ่นซอร์ส ที่คุณสามารถโฮสต์ด้วยตนเองได้ การมุ่งเน้นไปที่จุดนี้เป็นสิ่งสำคัญ
เนื่องจาก Hoppscotch เป็นโอเพ่นซอร์ส คุณสามารถเรียกใช้สแต็กทั้งหมดด้วยตนเองและชี้ CLI ไปยังอินสแตนซ์ของคุณเองได้ ทีมที่ไม่ต้องการให้ข้อมูลคำขอของพวกเขาอยู่ในคลาวด์ของผู้จำหน่ายมักจะชอบสิ่งนี้ ข้อแลกเปลี่ยนคือคุณจะต้องรับผิดชอบในการโฮสต์เอง
การติดตั้ง Hoppscotch CLI
ติดตั้งแบบ global จาก npm:
npm i -g @hoppscotch/cli
ข้อกำหนดหนึ่งที่ต้องระวัง: CLI ปัจจุบันต้องการ Node.js v22 หรือใหม่กว่า หากคุณยังใช้ Node 20 คุณสามารถใช้ CLI v0.26.0 ได้ แต่รุ่นล่าสุดจะรองรับ v22+ ตรวจสอบเวอร์ชันของคุณก่อนที่จะเชื่อมต่อเข้ากับ build agent:
node --version
hopp --version
หาก CI image ของคุณมาพร้อมกับ Node เวอร์ชันเก่า ให้ตรึงรันไทม์ไว้ที่ v22 ในไปป์ไลน์ มิฉะนั้นคุณจะพบข้อผิดพลาดในการติดตั้งหรือรันไทม์ที่ดูไม่เกี่ยวข้องกับการทดสอบของคุณ
คำสั่ง hopp test
ทุกอย่างทำงานผ่าน hopp test รูปแบบพื้นฐานจะชี้ไปที่ไฟล์คอลเลกชัน:
hopp test ./my-collection.json
คุณสามารถส่งไฟล์ environment และการหน่วงเวลาระหว่างคำขอได้:
hopp test ./my-collection.json -e ./staging.env.json -d 500
ในที่นี้ -e (หรือ --env) เป็นตัวกำหนด environment และ -d (หรือ --delay) จะรอจำนวนมิลลิวินาทีที่กำหนดระหว่างคำขอ ซึ่งช่วยได้เมื่อคุณกำลังใช้งาน API ที่มีข้อจำกัดด้านอัตรา (rate-limited API)
หากคอลเลกชันของคุณอยู่ในอินสแตนซ์ Hoppscotch (คลาวด์หรือโฮสต์เอง) แทนที่จะเป็นไฟล์ในเครื่อง คุณสามารถอ้างอิงด้วย ID และยืนยันตัวตนด้วยโทเค็นการเข้าถึงส่วนบุคคล:
hopp test <collection-id> --token <access_token> --server https://hoppscotch.your-company.com
--token ใช้เพื่อส่งโทเค็นการเข้าถึงส่วนบุคคลของคุณ และ --server ชี้ไปยัง URL ที่คุณโฮสต์ด้วยตนเอง หากคุณใช้ Hoppscotch cloud ที่โฮสต์อยู่ คุณสามารถละทิ้ง --server ได้
การรันแบบ Data-driven และการรายงาน
แฟล็กสองตัวเปลี่ยน hopp test จากการเรียกใช้ครั้งเดียวให้กลายเป็นสิ่งที่เหมาะกับ CI
สำหรับการทดสอบแบบ data-driven ให้ป้อนไฟล์ CSV และกำหนดจำนวนรอบที่จะรัน:
hopp test ./my-collection.json --iteration-data ./users.csv --iteration-count 3
--iteration-data รับไฟล์ CSV ซึ่งคอลัมน์จะกลายเป็นตัวแปรในการรันแต่ละครั้ง และ --iteration-count ควบคุมจำนวนครั้งที่คอลเลกชันจะทำซ้ำ ซึ่งเป็นแนวคิดเดียวกันกับ -d ของ Newman และครอบคลุมกรณีทั่วไปที่ต้องการ "เรียกใช้ขั้นตอนการเข้าสู่ระบบนี้กับ 50 บัญชี"
สำหรับการรายงาน CLI จะสร้าง JUnit XML ซึ่งระบบ CI ส่วนใหญ่สามารถนำเข้าเพื่อแสดงผลการทดสอบได้ทันที:
hopp test ./my-collection.json --reporter-junit ./report.xml
JUnit เป็นรูปแบบรายงานที่มีโครงสร้างเพียงอย่างเดียวที่ CLI สร้างขึ้น หากคุณต้องการไฟล์ HTML หรือรายงานที่โฮสต์และลิงก์ได้ นั่นคือช่องว่างที่ควรทราบก่อนที่คุณจะตัดสินใจ เครื่องมืออย่าง Apidog CLI จะออกรายงาน CLI, HTML และ JSON เพื่อการเปรียบเทียบ
สิ่งที่ดำเนินการจริงระหว่างการรัน
เมื่อคุณรัน hopp test, CLI จะดำเนินการตามคอลเลกชันตามลำดับ และสำหรับคำขอแต่ละรายการจะ:
- รันสคริปต์ pre-request
- ส่งคำขอ
- รันสคริปต์ทดสอบและประเมินการยืนยันแต่ละรายการ
สคริปต์ทดสอบใช้ Hoppscotch's scripting API: pw.test() กำหนดบล็อกทดสอบ และ pw.expect() ทำการยืนยันภายในนั้น ตัวอย่างเล็ก ๆ ที่แนบมากับคำขอมีลักษณะดังนี้:
pw.test("สถานะคือ 200", () => {
pw.expect(pw.response.status).toBe(200);
});
หากการยืนยันใดๆ ล้มเหลว คำสั่งจะออกด้วยรหัสที่ไม่ใช่ศูนย์ หากทุกอย่างผ่าน จะออกด้วยรหัส 0 พฤติกรรมการออกรหัสนี้คือข้อตกลงทั้งหมดกับ CI: การออกด้วยรหัสที่ไม่ใช่ศูนย์จะทำให้ build ล้มเหลว ซึ่งเป็นสิ่งที่คุณต้องการอย่างแท้จริง
ตัวอย่าง GitHub Actions
การเชื่อมต่อ hopp test เข้ากับ CI นั้นสั้นมาก เวิร์กโฟลว์นี้จะติดตั้ง CLI บนรันเนอร์ Node 22 และรันคอลเลกชันเมื่อมีการ push ทุกครั้ง:
name: API tests
on: [push]
jobs:
hopp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm i -g @hoppscotch/cli
- run: hopp test ./collection.json -e ./ci.env.json --reporter-junit ./report.xml
ขั้นตอน setup-node ที่ตรึงเวอร์ชัน v22 เป็นส่วนที่คนมักจะลืม หากไม่มีขั้นตอนนี้ Node รันเนอร์เริ่มต้นอาจจะเก่าเกินไปสำหรับ CLI ปัจจุบัน
ข้อจำกัดที่ควรพิจารณา
Hoppscotch CLI ทำงานได้ดีในขอบเขตของมันและมีความซื่อสัตย์เกี่ยวกับขอบเขตนั้น:
- เป็นเพียง collection runner ไม่ใช่แพลตฟอร์ม ไม่มีฟังก์ชันการออกแบบ, การจำลอง หรือการสร้างเอกสาร คุณต้องนำสิ่งเหล่านี้มาจากที่อื่น
- คุณต้องส่งออกหรือโฮสต์คอลเลกชันด้วยตนเอง CLI จะรันไฟล์คอลเลกชันหรือดึงจากอินสแตนซ์ที่คุณชี้ไป
- JUnit เป็นรายงานที่มีโครงสร้างเดียวเท่านั้น ไม่มี HTML ในตัวหรือรายงานที่โฮสต์
- Node v22+ เป็นข้อกำหนดที่เข้มงวดสำหรับเวอร์ชันปัจจุบัน
สิ่งเหล่านี้ไม่ใช่ข้อเสีย แต่เป็นราคาของเครื่องมือโอเพ่นซอร์สขนาดเล็กและฟรี หากความต้องการของคุณเติบโตเกินกว่า "รันคอลเลกชันใน CI" ไปสู่การออกแบบ, การจำลอง, การรันแบบ data-driven พร้อมรายงานที่หลากหลายขึ้น และการจัดการทรัพยากร API เป็นโค้ด นั่นคือจุดที่แพลตฟอร์มแบบรวมเข้ามามีบทบาท Apidog ครอบคลุมวงจรชีวิต API ทั้งหมด และ คู่มือฉบับสมบูรณ์ของ Apidog CLI แสดงด้านเทอร์มินัล คุณสามารถ ดาวน์โหลด Apidog และนำเข้าคอลเลกชัน Hoppscotch เพื่อเปรียบเทียบโดยตรง หรืออ่าน คำแนะนำการย้ายข้อมูล
คำถามที่พบบ่อย
Hoppscotch CLI ฟรีหรือไม่? ใช่ เป็นโอเพ่นซอร์สภายใต้โครงการ Hoppscotch และคุณสามารถโฮสต์ระบบนิเวศทั้งหมดด้วยตนเองได้ ดู เอกสาร CLI อย่างเป็นทางการ และ GitHub repo
ความแตกต่างระหว่าง hopp test และ Newman คืออะไร? ทั้งสองเป็น collection runner ที่มีการวนซ้ำแบบ data-driven Newman รัน Postman collections; hopp test รัน Hoppscotch collections แนวคิดจะใกล้เคียงกัน รวมถึงข้อมูลการวนซ้ำจาก CSV และการผ่าน/ไม่ผ่านตามรหัสออก
Hoppscotch CLI สามารถรันคอลเลกชันจากเซิร์ฟเวอร์ที่โฮสต์เองได้หรือไม่? ได้ ใช้ hopp test <collection-id> --token <access_token> --server <your-url> เพื่อดึงและรันคอลเลกชันจากอินสแตนซ์ของคุณเอง
มันสร้างรายงาน HTML หรือไม่? ไม่โดยตรง มันสร้าง JUnit XML ผ่าน --reporter-junit สำหรับรายงาน CLI, HTML และ JSON พร้อมกัน ลองเปรียบเทียบกับ รายงานการทดสอบ Apidog CLI
Hoppscotch CLI เป็นวิธีที่สะอาดและฟรีในการรัน API collections ใน CI โดยเฉพาะอย่างยิ่งหากคุณใช้ Hoppscotch หรือโฮสต์ด้วยตนเองอยู่แล้ว รู้ขอบเขตของมัน, ตรึง Node v22 และใช้ประโยชน์จากเอาต์พุต JUnit มันจะทำงานเดียวของมันได้ดี
