คุณคัดลอกคำสั่งจากแท็บ CI/CD วางลงในไปป์ไลน์ และมันก็ทำงานได้ดี แต่แล้วเพื่อนร่วมทีมก็ถามว่าทำไมบิลด์ยังขึ้นสีเขียวในเมื่อการทดสอบล้มเหลวอย่างชัดเจน หรือคุณสามารถชี้การรันเดียวกันไปที่ staging แทน production ได้หรือไม่ หรือจะเรียกใช้รายงานที่แดชบอร์ด CI ของคุณจะแยกวิเคราะห์ได้อย่างไร ทันใดนั้น คำสั่งบรรทัดเดียวก็ไม่เพียงพอ คุณจำเป็นต้องรู้ว่าทุกส่วนของมันทำอะไร
apidog run คือคำสั่งเดียวที่เป็นหัวใจของตัวรันบรรทัดคำสั่ง Apidog มันจะดำเนินการสถานการณ์ทดสอบ API ที่คุณสร้างไว้ใน Apidog แบบ Headless จากเทอร์มินัล โดยไม่มี GUI และไม่มีมนุษย์คลิกปุ่ม ทุกสิ่งที่ตัวรันสามารถทำได้ มันทำผ่านแฟล็กบนคำสั่งเดียวนี้: สถานการณ์ที่จะรัน, สภาพแวดล้อมที่จะเรียกใช้, จำนวนครั้งที่จะวนซ้ำ, รายงานที่จะสร้าง, และอะไรนับเป็นการล้มเหลว เรียนรู้ส่วนของแฟล็กเพียงครั้งเดียว คุณก็จะหยุดการคัดลอก-วางแบบไม่เข้าใจ
apidog run คืออะไร
Apidog CLI มาในรูปแบบแพ็คเกจ npm ที่ชื่อว่า apidog-cli คุณติดตั้งครั้งเดียวคุณจะได้ไบนารีเดียวคือ apidog ซึ่งมีคำสั่งย่อยหลักคือ run คำสั่งย่อยนี้จะนำสถานการณ์ทดสอบ Apidog ของคุณไปหนึ่งรายการและรันมันในแบบที่แอปพลิเคชันเดสก์ท็อปทำ จากนั้นจะรายงานผลกลับมาพร้อมกับ exit code และไฟล์รายงานใดๆ ที่คุณร้องขอ
ติดตั้งแบบโกลบอล:
npm install -g apidog-cli
ยืนยันว่าแก้ไขแล้ว:
apidog -v
สิ่งที่ต้องเข้าใจก่อนจะถึงแฟล็กคือ apidog run ทำงานกับอะไร มันไม่ได้กำหนดรูปแบบการทดสอบของตัวเอง การทดสอบคือสถานการณ์ที่คุณสร้างขึ้นในแอป Apidog: คำขอที่เชื่อมโยงกัน, การยืนยัน, ค่าที่ดึงมาจากคำตอบหนึ่งไปยังอีกคำตอบหนึ่ง, การวนซ้ำตามข้อมูล (data-driven) ที่เป็นทางเลือก CLI จะเข้าถึงโปรเจกต์ของคุณ ค้นหาสถานการณ์ด้วย ID และรันมัน ดังนั้นแฟล็กส่วนใหญ่จึงเกี่ยวกับการบอกตัวรันว่าจะดึงอะไรมาและทำงานอย่างไรในขณะที่รัน ไม่ใช่เกี่ยวกับการเขียนการทดสอบในบรรทัดคำสั่ง
คำสั่งจริงที่น้อยที่สุดมีลักษณะดังนี้:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 -n 1 -r html,cli
นั่นหมายความว่า: รับรองความถูกต้องด้วยโทเค็นนี้, รันสถานการณ์ทดสอบ 605067, กับสภาพแวดล้อม 1629989, หนึ่งครั้ง, และสร้างรายงาน HTML พร้อมกับเอาต์พุตเทอร์มินัลที่อ่านได้ ทุกแฟล็กในบรรทัดนั้นมีคำอธิบายด้านล่าง พร้อมกับแฟล็กที่คำสั่งนั้นละเว้นไป
ภาพรวมตัวเลือกทั้งหมด
นี่คือชุดตัวเลือกทั้งหมดที่จัดกลุ่มตามหน้าที่ ใช้เป็นตารางอ้างอิง ส่วนที่อยู่ถัดจากนี้จะอธิบายตัวเลือกที่ต้องการคำอธิบายมากกว่าหนึ่งประโยค
| กลุ่ม | แฟล็ก | อาร์กิวเมนต์ | สิ่งที่ควบคุม |
|---|---|---|---|
| เลือก | -t, --test-scenario |
<testScenarioId> |
รันสถานการณ์เดียวด้วย ID |
| เลือก | -f, --test-scenario-folder |
<folderId> |
รันทุกสถานการณ์ในโฟลเดอร์ |
| เลือก | --test-suite |
<testSuiteId> |
รัน Test Suite ด้วย ID |
| เลือก | --project |
<projectId> |
โปรเจกต์ที่สถานการณ์เป็นส่วนหนึ่ง |
| เลือก | --branch |
<branchName> |
รันกับ Branch (ค่าเริ่มต้นคือ main) |
| การยืนยันตัวตน | --access-token |
<accessToken> |
ยืนยันตัวตนการรัน; ต้องมีเมื่อออนไลน์ |
| สภาพแวดล้อม | -e, --environment |
<environmentId> |
สภาพแวดล้อมที่จะกำหนดเป้าหมาย |
| วนซ้ำ | -n, --iteration-count |
<n> |
รันสถานการณ์ n ครั้ง |
| วนซ้ำ | -d, --iteration-data |
<path> |
ขับเคลื่อนการวนซ้ำจากไฟล์ JSON หรือ CSV |
| วนซ้ำ | --variables |
<path> |
โหลดตัวแปรจากไฟล์ภายใน |
| วนซ้ำ | --global-var |
<value> |
ตั้งค่าตัวแปร Global แบบอินไลน์, key=value |
| วนซ้ำ | --env-var |
<value> |
แทนที่ตัวแปรสภาพแวดล้อมแบบอินไลน์, key=value |
| รายงาน | -r, --reporters |
[reporters] |
รูปแบบรายงาน: cli, html, json, junit |
| รายงาน | --out-dir |
<outDir> |
ที่ที่รายงานจะถูกเขียน |
| รายงาน | --out-file |
<outFile> |
ชื่อไฟล์รายงาน พร้อมตัวยึดชื่อ |
| รายงาน | --out-json-failures-separated |
<value> |
เขียนข้อผิดพลาดไปยังไฟล์ JSON แยกต่างหาก |
| รายงาน | --upload-report |
[value] |
อัปโหลดภาพรวมรายงานไปยัง Apidog cloud |
| ข้อผิดพลาด | --on-error |
<behavior> |
ignore, continue, หรือ end เมื่อเกิดข้อผิดพลาด |
| ข้อผิดพลาด | --ignore-redirects |
ไม่ติดตามการเปลี่ยนเส้นทาง HTTP | |
| ข้อผิดพลาด | --delay-request |
[n] |
รอ n มิลลิวินาทีระหว่างคำขอ |
| ข้อผิดพลาด | --timeout-request |
[n] |
หมดเวลาต่อคำขอเป็นมิลลิวินาที |
| ข้อผิดพลาด | --timeout-script |
[n] |
หมดเวลาการรันสคริปต์เป็นมิลลิวินาที |
| TLS | -k, --insecure |
ปิดใช้งานการยืนยันใบรับรอง SSL | |
| TLS | --ssl-client-cert |
<path> |
ใบรับรองไคลเอ็นต์ (PEM) |
| TLS | --ssl-client-key |
<path> |
คีย์ส่วนตัวสำหรับใบรับรองไคลเอ็นต์ |
| TLS | --ssl-client-passphrase |
<passphrase> |
รหัสผ่านสำหรับใบรับรองไคลเอ็นต์ |
| TLS | --ssl-client-cert-list |
<path> |
การกำหนดค่าแมปใบรับรองไปยังโฮสต์ |
| TLS | --ssl-extra-ca-certs |
<path> |
ใบรับรอง CA ที่เชื่อถือได้เพิ่มเติม |
| เอาต์พุต | --verbose |
พิมพ์รายละเอียดคำขอและคำตอบทั้งหมด | |
| เอาต์พุต | --silent |
ระงับเอาต์พุตคอนโซล | |
| เอาต์พุต | --color |
<value> |
บังคับให้มีหรือไม่มีเอาต์พุตสี |
| เอาต์พุต | --external-program-path |
<path> |
ไฟล์โปรแกรมภายนอกสำหรับตรรกะที่กำหนดเอง |
| เอาต์พุต | --database-connection |
<path> |
การกำหนดค่าฐานข้อมูลสำหรับขั้นตอนที่สอบถาม DB |
| เอาต์พุต | --preferred-http-version |
<version> |
เวอร์ชันโปรโตคอล HTTP ที่ต้องการ |
| เอาต์พุต | -b, --bigint |
เปิดใช้งาน BigInt สำหรับค่าตัวเลขขนาดใหญ่ | |
| เอาต์พุต | --lang |
<language> |
ภาษา CLI |
| เอาต์พุต | -h, --help |
พิมพ์ความช่วยเหลือ |
ชื่อแฟล็กและค่าเริ่มต้นสามารถเปลี่ยนแปลงได้ระหว่างการเปิดตัว CLI หากไม่แน่ใจ ตัวรันคือแหล่งความจริงของตัวเอง: รัน apidog run --help บนเวอร์ชันที่คุณติดตั้งและเชื่อถือสิ่งนั้นมากกว่าบทความใดๆ รวมถึงบทความนี้ด้วย
การเลือกสิ่งที่จะรัน
แฟล็กสามตัวจะกำหนดขอบเขตของการรัน และคุณเลือกได้เพียงหนึ่งตัวต่อคำสั่ง
-t, --test-scenario <id> รันสถานการณ์เดียว นี่คือกรณีประจำวัน: การทดสอบ smoke test ที่เน้นเฉพาะจุด, สถานการณ์การถดถอยหนึ่งรายการ, สิ่งเดียวที่คุณต้องการให้เป็นเงื่อนไขใน pull request
-f, --test-scenario-folder <id> รันทุกสถานการณ์ภายในโฟลเดอร์ ใช้สิ่งนี้เมื่อคุณจัดระเบียบพื้นที่คุณลักษณะเป็นโฟลเดอร์และต้องการให้กลุ่มทั้งหมดถูกรันเป็นงานเดียว เช่น การตรวจสอบการถดถอยรายคืน
--test-suite <id> รัน test suite ที่คัดสรรมา ซึ่งเป็นชุดของสถานการณ์ที่คุณรวบรวมไว้เพื่อรันพร้อมกันเป็นหน่วยตรรกะเดียว Test Suite เป็นเครื่องมือที่เหมาะสมเมื่อสถานการณ์ที่คุณต้องการไม่ได้อยู่ในโฟลเดอร์เดียวกันทั้งหมด แต่ยังคงเป็นส่วนหนึ่งของ test pass เดียวกัน
ตัวเลือกอีกสองตัวช่วยปรับปรุงว่าตัวรันมองหาที่ไหน --project <id> ระบุโปรเจกต์ที่สถานการณ์อยู่ ซึ่งมีประโยชน์เมื่อโทเค็นของคุณมีสิทธิ์เข้าถึงมากกว่าหนึ่งโปรเจกต์ --branch <name> รันสถานการณ์ตามที่มีอยู่ใน branch ที่ระบุ แทนที่จะเป็น main ซึ่งช่วยให้คุณสามารถตรวจสอบการเปลี่ยนแปลงการทดสอบบน feature branch ก่อนที่จะรวมเข้าด้วยกัน
# หนึ่งสถานการณ์
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 -r cli
# โฟลเดอร์ทั้งหมด
apidog run --access-token $APIDOG_ACCESS_TOKEN -f 88012 -r html,junit
# ชุดที่คัดสรรมา
apidog run --access-token $APIDOG_ACCESS_TOKEN --test-suite 40231 -r junit
การยืนยันตัวตนการรัน
--access-token <token> เป็นแฟล็กเดียวที่ทุกการรันออนไลน์ต้องการ มันพิสูจน์ว่าการรันได้รับอนุญาตให้ดึงและดำเนินการสถานการณ์ของคุณ คุณสร้างโทเค็นภายในแท็บ CI/CD ของสถานการณ์ทดสอบใน Apidog ซึ่งแอปจะสร้างคำสั่ง apidog run ให้คุณพร้อมกับ ID สถานการณ์และ ID สภาพแวดล้อมที่กรอกไว้แล้ว
ปฏิบัติต่อโทเค็นเหมือนรหัสผ่าน อย่าคัดลอกไปวางในไฟล์ไปป์ไลน์ที่คอมมิตแล้วหรือสคริปต์ที่ใช้ร่วมกัน เก็บไว้เป็นความลับในระบบ CI ของคุณและส่งผ่านตัวแปรสภาพแวดล้อม ซึ่งเป็นเหตุผลว่าทำไมทุกตัวอย่างในที่นี้จึงอ้างอิง $APIDOG_ACCESS_TOKEN แทนที่จะเป็นสตริงตามตัวอักษร หากโทเค็นรั่วไหล ให้สร้างใหม่จากแท็บ CI/CD เดิม และโทเค็นเก่าจะหยุดทำงาน
การกำหนดเป้าหมายสภาพแวดล้อมและการวนซ้ำ
แฟล็กสภาพแวดล้อมคือสิ่งที่ทำให้สถานการณ์เดียวสามารถใช้งานได้หลายวัตถุประสงค์ -e, --environment <id> ชี้การรันไปยังสภาพแวดล้อมที่เฉพาะเจาะจง ดังนั้นสถานการณ์เดียวกันสามารถตรวจสอบ staging ใน pull-request gate และ production ใน post-deploy smoke test ได้โดยที่คุณไม่ต้องทำซ้ำ หากคุณจัดการค่าต่างๆ ทั่วทั้งสภาพแวดล้อม คู่มือเกี่ยวกับ การจัดการสภาพแวดล้อมและความลับสำหรับไคลเอ็นต์ API จะครอบคลุมวิธีการไหลของค่าเหล่านั้น
-n, --iteration-count <n> รันสถานการณ์ n ครั้งติดต่อกัน มีประโยชน์สำหรับการตรวจสอบความเสถียรอย่างรวดเร็ว หรือสำหรับการทำซ้ำขั้นตอนที่ควรจะเป็น idempotent
-d, --iteration-data <path> คือแฟล็กที่ขับเคลื่อนด้วยข้อมูล ชี้ไปที่ไฟล์ JSON หรือ CSV และตัวรันจะดำเนินการสถานการณ์หนึ่งครั้งต่อแถว โดยถือว่าแต่ละแถวเป็นรอบของตัวเองพร้อมค่าอินพุตของตัวเอง นั่นคือวิธีที่คุณรันสถานการณ์การเข้าสู่ระบบหนึ่งครั้งสำหรับห้าสิบบัญชี หรือขั้นตอนการสร้างคำสั่งซื้อหนึ่งครั้งสำหรับตารางข้อมูล รูปแบบเชิงลึกอยู่ใน การทดสอบ API ที่ขับเคลื่อนด้วยข้อมูลด้วย CSV และ JSON
แฟล็กสามตัวจะแทรกค่าโดยไม่ต้องแก้ไขสถานการณ์ --variables <path> โหลดตัวแปรจากไฟล์ภายใน --global-var key=value ตั้งค่าตัวแปร Global แบบอินไลน์ --env-var key=value แทนที่ตัวแปรสภาพแวดล้อมเดียวสำหรับการรันนี้เท่านั้น สิ่งเหล่านี้มีประโยชน์ใน CI เมื่อค่า (URL ฐาน, feature flag) แตกต่างกันไปในแต่ละไปป์ไลน์และคุณไม่ต้องการสภาพแวดล้อมที่แยกต่างหากสำหรับแต่ละอัน หากตัวแปรใน Apidog เป็นเรื่องใหม่สำหรับคุณ การควบคุมตัวแปรใน Apidog จะอธิบายขอบเขต
# รันสถานการณ์ 50 ครั้งด้วย CSV ของอินพุต
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -d ./accounts.csv -r junit
# แทนที่ตัวแปร env หนึ่งตัวสำหรับการรันนี้เท่านั้น
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 --env-var baseUrl=https://staging.internal -r cli
Reporters: ทุกรูปแบบเอาต์พุตที่ apidog run สามารถสร้างได้
นี่คือกลุ่มที่ผู้คนค้นหามากที่สุด ดังนั้นนี่คือผู้รายงานแต่ละรายและวัตถุประสงค์ของมัน คุณเลือกได้ด้วย -r, --reporters และคุณสามารถส่งได้หลายตัวพร้อมกัน โดยคั่นด้วยเครื่องหมายจุลภาค ค่าเริ่มต้นคือ cli
cli พิมพ์สรุปที่อ่านง่ายไปยังเทอร์มินัล เป็นสิ่งที่มนุษย์สแกนในบันทึกการสร้างเพื่อดูจำนวนผ่าน/ไม่ผ่าน และการยืนยันใดที่เสียไป เปิดใช้งานไว้แม้กระทั่งกับรูปแบบของเครื่องจักร เพื่อให้บันทึกยังคงมีประโยชน์
html เขียนรายงาน HTML ที่รวมอยู่ในตัวเอง เก็บเป็นสิ่งประดิษฐ์การสร้างและเปิดในเบราว์เซอร์เพื่อดูการรันทั้งหมดพร้อมรายละเอียดคำขอและคำตอบ นี่คือรูปแบบที่คุณมอบให้กับผู้ที่ไม่ได้ดูไปป์ไลน์
junit สร้าง XML ในรูปแบบ JUnit มาตรฐาน แดชบอร์ด CI เกือบทั้งหมดรู้วิธีแยกวิเคราะห์ JUnit XML เป็นโครงสร้างผ่าน/ไม่ผ่าน แสดงข้อผิดพลาดในวิดเจ็ต merge-request และติดตามผลลัพธ์เมื่อเวลาผ่านไป หากคุณเลือกรูปแบบเครื่องจักรเพียงรูปแบบเดียวสำหรับ CI ให้เลือกรูปแบบนี้
json สร้างผลลัพธ์ที่มีโครงสร้างดิบ ใช้เมื่อคุณต้องการประมวลผลผลลัพธ์ด้วยตัวเอง: ส่งไปยังสคริปต์ ผลักดันเมตริกไปยังที่ใดที่หนึ่ง หรือสร้างสรุปที่กำหนดเอง
การรวมกันของ CI ทั่วไปคือ HTML สำหรับมนุษย์และ JUnit สำหรับแดชบอร์ด:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -r html,junit --out-dir ./apidog-reports
แฟล็กรายงานที่เหลือจะควบคุมตำแหน่งที่เอาต์พุตจะไปถึงและสิ่งที่เพิ่มเติม:
--out-dir <dir>กำหนดไดเรกทอรีที่จะเขียนรายงาน ค่าเริ่มต้นคือ./apidog-reports--out-file <name>กำหนดชื่อไฟล์รายงานและยอมรับตัวยึดตำแหน่ง{FOLDER_NAME},{SCENARIO_NAME}, และ{GENERATE_TIME}เพื่อให้คุณสามารถประทับไฟล์ด้วยชื่อสถานการณ์และเวลาประทับแทนที่จะเขียนทับไฟล์เดียวทุกครั้งที่รัน--out-json-failures-separated <value>แยกความล้มเหลวออกเป็นไฟล์ JSON ของตัวเอง ซึ่งทำให้การเปรียบเทียบข้อผิดพลาดเพียงอย่างเดียวง่ายต่อการอ่าน--upload-report [value]อัปโหลดภาพรวมรายงานไปยัง Apidog cloud เพื่อให้การรันปรากฏในประวัติโปรเจกต์ของคุณควบคู่ไปกับไฟล์ในเครื่อง
การควบคุมความล้มเหลว: การจัดการข้อผิดพลาดและรหัสออก
ตัวรันจะมีประโยชน์ในไปป์ไลน์ก็ต่อเมื่อมันบอกไปป์ไลน์ได้ว่าการทดสอบผ่านหรือไม่ apidog run ทำเช่นนี้ในแบบที่เครื่องมือบรรทัดคำสั่งที่ดีควรทำ: มันจะออก 0 เมื่อการยืนยันทุกอย่างผ่าน และรหัสที่ไม่ใช่ศูนย์เมื่อมีสิ่งใดผิดพลาด พฤติกรรมเดียวนี้คือคุณภาพโดยรวม CI จะอ่านรหัสออก ทำเครื่องหมายขั้นตอนว่าล้มเหลว และบล็อกการรวมหรือการปรับใช้ คุณไม่ต้องกำหนดค่าเกต; รหัสออกคือเกต
--on-error <behavior> กำหนดสิ่งที่เกิดขึ้นเมื่อขั้นตอนล้มเหลวกลางสถานการณ์ และมีสามค่า:
endหยุดการรันที่ขั้นตอนแรกที่ล้มเหลว ใช้สำหรับการทดสอบ smoke test ที่ล้มเหลวเร็ว ซึ่งคุณต้องการความคิดเห็นทันทีที่เกิดข้อผิดพลาดcontinueรันทุกขั้นตอนที่เหลือเพื่อให้คุณรวบรวมความล้มเหลวทั้งหมดในรายงานเดียว ใช้สำหรับการตรวจสอบการถดถอยที่คุณต้องการเห็นข้อผิดพลาดทั้งหมดพร้อมกันเพื่อประหยัดเวลาignoreอนุญาตให้การรันดำเนินต่อไปหลังจากขั้นตอนที่ทราบว่าไม่เสถียรโดยไม่ถือว่าเป็นอันตรายถึงชีวิต ใช้อย่างระมัดระวัง; ขั้นตอนที่ถูกละเลยไม่ควรซ่อนการถดถอยจริง
ไม่ว่าจะด้วยวิธีใด หากการยืนยันใดๆ ล้มเหลว การรันก็ยังคงจบลงด้วยรหัสที่ไม่ใช่ศูนย์ ดังนั้นเกตยังคงทำงานไม่ว่าคุณจะเลือกพฤติกรรมใด สิ่งหนึ่งที่ทำลายเกตอย่างเงียบๆ คือการห่อคำสั่งด้วยสิ่งที่จะกลืนรหัสออก เช่น การต่อท้าย || true ในเชลล์ อย่าทำเช่นนั้น การจบด้วยรหัสที่ไม่ใช่ศูนย์คือจุดประสงค์ทั้งหมด
แฟล็กสี่ตัวปรับแต่งพฤติกรรมคำขอระหว่างการรัน:
--ignore-redirectsหยุดตัวรันจากการติดตามการเปลี่ยนเส้นทาง HTTP โดยอัตโนมัติ เพื่อให้คุณสามารถยืนยันการตอบกลับการเปลี่ยนเส้นทางนั้นเองได้--delay-request [n]รอnมิลลิวินาทีระหว่างคำขอ ซึ่งช่วยป้องกันการจำกัดอัตรา (rate limits) หรือปลายทางที่ไวต่อโหลด--timeout-request [n]กำหนดขีดจำกัดว่าคำขอเดียวอาจใช้เวลานานเท่าใดในหน่วยมิลลิวินาที--timeout-script [n]กำหนดขีดจำกัดว่าสคริปต์ก่อนหรือหลังคำขออาจรันได้นานเท่าใดในหน่วยมิลลิวินาที
# smoke test: หยุดที่ความล้มเหลวแรก
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 -r cli --on-error end
# regression: รันทุกอย่าง รวบรวมความล้มเหลวทั้งหมด
apidog run --access-token $APIDOG_ACCESS_TOKEN -f 88012 -r html,junit --on-error continue --out-dir ./nightly-reports
TLS และใบรับรอง
เมื่อคุณทดสอบปลายทางที่อยู่เบื้องหลัง Mutual TLS หรือ Certificate Authority ภายใน กลุ่มนี้คือวิธีที่คุณจะสร้างการเชื่อมต่อ
-k, --insecure ปิดใช้งานการยืนยันใบรับรอง SSL โดยสิ้นเชิง ใช้เฉพาะกับโฮสต์ภายในที่เชื่อถือได้ซึ่งมีใบรับรองที่ลงนามเองเท่านั้น อย่าชี้ไปที่สาธารณะเด็ดขาด เพราะมันจะปิดการตรวจสอบที่ป้องกันการเชื่อมต่อ
สำหรับ Mutual TLS ที่เหมาะสม ให้ระบุข้อมูลรับรองไคลเอ็นต์แทน: --ssl-client-cert <path> สำหรับใบรับรอง PEM, --ssl-client-key <path> สำหรับคีย์ส่วนตัว และ --ssl-client-passphrase <passphrase> หากคีย์ถูกเข้ารหัส เมื่อโฮสต์ที่แตกต่างกันต้องการใบรับรองที่แตกต่างกัน --ssl-client-cert-list <path> จะชี้ไปที่ไฟล์คอนฟิกที่แมปสิ่งเหล่านี้ และ --ssl-extra-ca-certs <path> เพิ่มใบรับรอง CA ที่เชื่อถือได้ ซึ่งเป็นการแก้ไขที่สะอาดสำหรับ CA chain ภายในที่ตัวรันอาจไม่รู้จัก มิฉะนั้นจะดีกว่าการใช้ -k
เอาต์พุตและการวินิจฉัย
กลุ่มสุดท้ายจะควบคุมสิ่งที่ตัวรันพิมพ์ออกมาและรายละเอียดการดำเนินการบางส่วน
--verbose พิมพ์คำขอและคำตอบทั้งหมดสำหรับทุกขั้นตอน นี่คือสิ่งที่คุณต้องทำเป็นอันดับแรกเมื่อสถานการณ์ผ่านในเครื่องแต่ล้มเหลวใน CI: มันแสดงไบต์ที่ตัวรันส่งและรับกลับมาอย่างแม่นยำ เพื่อให้คุณสามารถเปรียบเทียบกับสิ่งที่คุณส่งด้วยมือได้ --silent ทำสิ่งที่ตรงกันข้าม คือระงับเอาต์พุตคอนโซลสำหรับงานที่กำหนดเวลาไว้ที่มีเสียงดัง ซึ่งคุณสนใจเพียงแค่รหัสออกและรายงานที่บันทึกไว้ --color <value> บังคับให้มีหรือไม่มีเอาต์พุตสี ซึ่งมีประโยชน์เมื่อโปรแกรมดูบันทึก CI ทำให้รหัส ANSI ผิดเพี้ยน
ส่วนที่เหลือใช้สำหรับคุณสมบัติเฉพาะของสถานการณ์:
--external-program-path <path>ชี้ไปยังไฟล์ของโปรแกรมภายนอกสำหรับตรรกะที่กำหนดเองที่สถานการณ์เรียกใช้--database-connection <path>จัดหาการกำหนดค่าฐานข้อมูลสำหรับสถานการณ์ที่มีขั้นตอนที่สอบถามฐานข้อมูลโดยตรง--preferred-http-version <version>กำหนดเวอร์ชันโปรโตคอล HTTP ที่ตัวรันต้องการ-b, --bigintเปิดใช้งานการจัดการ BigInt เพื่อให้ค่าตัวเลขขนาดใหญ่ไม่สูญเสียความแม่นยำ--lang <language>กำหนดภาษาที่แสดงผลของ CLI-h, --helpพิมพ์ข้อความช่วยเหลือ ซึ่งเป็นรายการที่เชื่อถือได้สำหรับเวอร์ชันที่คุณติดตั้ง
การรวบรวมเข้าด้วยกัน: คำสั่งที่คุณจะรันจริง
Smoke test กับ production ทันทีหลังจากการ Deploy, และล้มเหลวอย่างรวดเร็ว:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e $PROD_ENV_ID -r cli --on-error end
Full nightly regression ในโฟลเดอร์, ทุกความล้มเหลวในรายงาน HTML และ JUnit หนึ่งฉบับ:
apidog run --access-token $APIDOG_ACCESS_TOKEN -f 88012 -r html,junit --on-error continue --out-dir ./nightly-reports
การรันที่ขับเคลื่อนด้วยข้อมูลผ่าน CSV, เอาต์พุตที่เครื่องอ่านได้สำหรับ CI:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -d ./test-cases.csv -r junit
ตรวจสอบการเปลี่ยนแปลงการทดสอบบน feature branch ก่อนที่จะรวมเข้าด้วยกัน:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 --branch feature-payments -e 1629989 -r cli
แก้ไขข้อผิดพลาดที่เกิดขึ้นใน CI เท่านั้นโดยการดัมพ์รายละเอียดสายข้อมูล:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 -r cli --verbose
หากคุณกำลังรัน CLI บน CI runner ชั่วคราวและไม่อยากติดตั้งแบบ global ให้สลับการติดตั้งไปใช้ npx:
npx apidog-cli run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e 1629989 -r junit
นั่นครอบคลุมพื้นผิวเดียวกัน การเลือกระหว่างการติดตั้งแบบ global และ npx เกี่ยวข้องกับสุขอนามัยของ runner ไม่ใช่ความสามารถ ในการตั้งค่าสถานการณ์ที่ CLI รัน ดาวน์โหลด Apidog สร้างสถานการณ์หนึ่งในแอป จากนั้นคัดลอกคำสั่งที่สร้างขึ้นจากแท็บ CI/CD และกำหนดพารามิเตอร์โทเค็น
