วิธีส่งข้อมูลระหว่าง Test Steps ใน Apidog

Oliver Kingsley

Oliver Kingsley

6 August 2025

วิธีส่งข้อมูลระหว่าง Test Steps ใน Apidog

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

เมื่อออกแบบเวิร์กโฟลว์การทดสอบอัตโนมัติใน Apidog คุณจะใช้ขั้นตอนการทดสอบหลายประเภท เช่น **คำขอ API, การสอบถามฐานข้อมูล, For loop, ForEach Loop, Scripts** และอื่นๆ

ประเภทขั้นตอนการทดสอบ

บ่อยครั้งที่ข้อมูลที่สร้างขึ้นในขั้นตอนหนึ่งจำเป็นต้องนำไปใช้ในขั้นตอนถัดไป สิ่งนี้สร้างกระแสการทำงานที่เป็นตรรกะที่ **ข้อมูลขับเคลื่อนกระบวนการ** และ **ขั้นตอนต่างๆ เชื่อมโยงกัน**

ตัวอย่างเช่น คุณอาจ:

สิ่งนี้ทำให้เกิดคำถามสำคัญ:

**คุณจะอ้างอิงข้อมูลจากขั้นตอนก่อนหน้า (ต้นน้ำ) ในขั้นตอนถัดไป (ปลายน้ำ) ได้อย่างถูกต้องได้อย่างไร?**

สองกลไกสำหรับการส่งผ่านข้อมูลใน Apidog

ในการทดสอบอัตโนมัติของ Apidog มีสองวิธีหลักในการส่งผ่านข้อมูลระหว่างขั้นตอนการทดสอบต่างๆ:

1. ดึงข้อมูลขั้นตอนก่อนหน้าผ่าน "Dynamic Values"

คุณสามารถอ้างอิงเอาต์พุตของขั้นตอนก่อนหน้า (ต้นน้ำ) ได้โดยตรงในขั้นตอนถัดไป (ปลายน้ำ) โดยใช้คุณสมบัติ "**Dynamic Value**" ซึ่งช่วยให้คุณสามารถดึงข้อมูลได้ทันทีโดยไม่ต้องจัดเก็บ

ดึงข้อมูลขั้นตอนก่อนหน้าผ่าน "Dynamic Values" ในการทดสอบอัตโนมัติของ Apidog

2. จัดเก็บตัวแปรและนำกลับมาใช้ใหม่

คุณสามารถดึงข้อมูลสำคัญจากขั้นตอนต้นน้ำและ**จัดเก็บเป็นตัวแปร** ตัวแปรเหล่านี้สามารถนำกลับมาใช้ใหม่ในขั้นตอนใดก็ได้ที่ตามมา

การเรียนรู้สองวิธีนี้ในการส่งผ่านข้อมูลเป็นกุญแจสำคัญในการสร้างเวิร์กโฟลว์อัตโนมัติที่ขับเคลื่อนด้วยข้อมูลและมีประสิทธิภาพใน Apidog

บทความนี้อธิบายวิธีการจัดการข้อมูลในขั้นตอนการทดสอบประเภทต่างๆ จากสองมุมมอง: **วิธีดึงข้อมูล** และ **วิธีใช้ข้อมูล** การทำความเข้าใจทั้งสองสิ่งนี้จะช่วยให้คุณสามารถสร้างเวิร์กโฟลว์การทดสอบที่ยืดหยุ่นและเชื่อมโยงกันได้ดียิ่งขึ้น

การดึงและใช้ข้อมูลการตอบสนองของปลายทาง

ทำความเข้าใจข้อมูลการตอบสนองของปลายทาง

ในการทดสอบอัตโนมัติ คำขอ API มักจะส่งคืน**การตอบสนอง JSON** ที่มีโครงสร้าง ซึ่งมักจะทำหน้าที่เป็น**อินพุตสำหรับขั้นตอนการทดสอบถัดไป**

ต่างจากขั้นตอนประเภทอื่น การตอบสนองของปลายทางมักจะซับซ้อนกว่า โดยมักจะรวมถึง**ออบเจกต์และอาร์เรย์ที่ซ้อนกัน**

วิธีดึงข้อมูลจากการตอบสนองของปลายทาง

มีสองวิธีหลักในการดึงและส่งผ่านข้อมูลการตอบสนองของปลายทางระหว่างขั้นตอนการทดสอบ:

วิธีที่หนึ่ง: การอ้างอิงค่าแบบไดนามิก

ใช้ "**Dynamic Values**" เพื่ออ้างอิงข้อมูลจากขั้นตอนก่อนหน้าโดยตรง:

วิธีที่สอง: ดึงข้อมูลเป็นตัวแปร

คุณยังสามารถใช้คุณสมบัติ "**Extract Variables**" ในตัวประมวลผลหลังการทำงานของปลายทางเพื่อดึงฟิลด์เฉพาะจากการตอบสนองเป็นตัวแปรได้

ตัวอย่างเช่น การดึง id ของผลิตภัณฑ์ในการตอบสนอง:

ในขั้นตอนถัดไป เพียงอ้างอิงโดยใช้ {{products_id}}

วิธีใช้ข้อมูลที่ดึงมาจากปลายทาง

เมื่อคุณดึงข้อมูลจากการตอบสนองของ API แล้ว—ไม่ว่าจะใช้ "**Dynamic Values**" หรือ "**Extracted Variables**"—คุณสามารถใช้ข้อมูลนั้นในขั้นตอนปลายน้ำได้หลายวิธี:

1. ใช้ข้อมูลในคำขอปลายทาง

ใช้ข้อมูลที่ดึงมาในคำขอ API

2. ใช้ข้อมูลในการดำเนินการฐานข้อมูล

คุณสามารถใช้การตอบสนองของ API เป็นอินพุตในการสอบถามฐานข้อมูลได้ ทั้งสองวิธีใช้ได้:

SELECT * FROM products WHERE id = '{{$.1.response.body.products[0].id}}'

ใช้ค่าไดนามิกเพื่ออ้างอิงข้อมูลการตอบสนองของ API โดยตรงในการสอบถาม SQL:

SELECT * FROM products WHERE id = '{{products_id}}'

3. ใช้ข้อมูลใน For Loop

หากต้องการทำซ้ำขั้นตอนตามความยาวของอาร์เรย์จากการตอบสนองของ API:

{{$.1.response.body.products.length}}

สิ่งนี้จะกำหนดจำนวนรอบการวนซ้ำ

ใช้ข้อมูลใน For Loop

4. ใช้ข้อมูลใน ForEach Loops

หากคุณต้องการวนซ้ำแต่ละรายการในอาร์เรย์ที่ส่งคืนโดยปลายทาง:

ใช้ข้อมูลใน ForEach Loops ผ่านวิธี dynamic value

5. ใช้ข้อมูลในสคริปต์

หากต้องการใช้ข้อมูลจากขั้นตอนก่อนหน้าภายใน**สคริปต์** ให้ใช้วิธี pm.variables.get() นี่คือวิธีการ:

const products = pm.variables.get("$.1.response.body.products")
ใช้ข้อมูลที่ดึงมาในสคริปต์ผ่านวิธี dynamic value

รับค่าของตัวแปรชั่วคราว:

const products = pm.variables.get("products") 

รับค่าของตัวแปรสภาพแวดล้อม:

const products = pm.environment.get("products") 

รับค่าของตัวแปรส่วนกลาง:

const products = pm.globals.get("products")
💡
ในสคริปต์ คุณไม่สามารถใช้ไวยากรณ์การแทรกค่าแบบ {{products}} ได้โดยตรง แต่คุณต้องดึงค่าตัวแปรโดยใช้วิธีการที่เหมาะสมที่กล่าวมาข้างต้น

การดึงและใช้ผลลัพธ์การสอบถามฐานข้อมูล

ทำความเข้าใจข้อมูลฐานข้อมูล

เมื่อขั้นตอนการสอบถามฐานข้อมูลถูกดำเนินการ จะส่งคืนข้อมูลที่มีโครงสร้างในรูปแบบของอาร์เรย์ของออบเจกต์ แม้ว่าจะส่งคืนเพียงหนึ่งระเบียน ก็จะยังคงอยู่ในรูปแบบอาร์เรย์ ตัวอย่างเช่น:

ผลลัพธ์การสอบถามฐานข้อมูลใน Apidog

ต่างจากการตอบสนองของปลายทาง **ข้อมูลจากขั้นตอนฐานข้อมูลไม่สามารถเข้าถึงได้โดยตรงโดยใช้ตัวแปรไดนามิก** คุณต้องดึงค่าเหล่านั้นออกมาเป็นตัวแปรก่อน

วิธีดึงข้อมูลจากฐานข้อมูล

หลังจากรันการสอบถาม SQL ในขั้นตอนฐานข้อมูล Apidog จะแยกวิเคราะห์การตอบสนองเป็นข้อมูลที่มีโครงสร้างโดยอัตโนมัติ ดังนี้:

[
  {
    "id": "1000",
    "title": "Title 1",
    "description": "Description for Title 1"
  }
]

จากนั้นคุณสามารถใช้ **JSONPath** เพื่อดึงฟิลด์เฉพาะและบันทึกเป็นตัวแปรได้

ตัวอย่างเช่น:

ใช้ JSONPath เพื่อดึงฟิลด์เฉพาะและบันทึกเป็นตัวแปร

วิธีใช้ข้อมูลที่ดึงมาจากฐานข้อมูล

1. ใช้ข้อมูลในคำขอปลายทาง

หากการสอบถามฐานข้อมูลของคุณส่งคืน ID และคุณบันทึกเป็นตัวแปร (products_id) คุณสามารถใช้มันได้โดยตรงในคำขอปลายทางถัดไป:

ใช้ข้อมูลที่ดึงมาจากฐานข้อมูลในคำขอปลายทาง

2. ใช้ข้อมูลใน ForEach Loops

หากการสอบถามของคุณส่งคืนรายการระเบียน และคุณต้องการประมวลผลแต่ละรายการแยกกัน คุณสามารถใช้อาร์เรย์ทั้งหมดเป็นแหล่งข้อมูลสำหรับลูป ForEach ได้:

ข้อสมมติฐานคือ คุณบันทึกอาร์เรย์ทั้งหมดเมื่อดึงตัวแปรในการดำเนินการฐานข้อมูล ตัวอย่างเช่น:

3. ใช้ข้อมูลในสคริปต์

หากต้องการใช้ตัวแปรฐานข้อมูลที่ดึงมาในสคริปต์ ให้ใช้วิธีเดียวกับตัวแปรอื่นๆ

รับค่าของตัวแปรชั่วคราว:

const products = pm.variables.get("products")

รับค่าของตัวแปรสภาพแวดล้อม:

const products = pm.environment.get("products")

รับค่าของตัวแปรส่วนกลาง:

const products = pm.globals.get("products")

การดึงและใช้ข้อมูลจาก For Loops

การทำงานของ For Loops

**`For loop`** ใช้สำหรับทำซ้ำชุดการกระทำที่กำหนดหลายครั้ง โดยทำงานตามจำนวนรอบที่กำหนดไว้

คุณสามารถกำหนดจำนวนครั้งที่แน่นอนในการวนซ้ำ หรือใช้ค่าไดนามิก เช่น ความยาวของอาร์เรย์ .length ที่ส่งคืนจากขั้นตอนก่อนหน้า ตัวอย่างเช่น:  {{$.1.response.body.products.length}}:

หมายเหตุ: ต่างจากขั้นตอนอื่นๆ ที่ส่งออกข้อมูล **`For loop` ไม่ได้ส่งคืนข้อมูลโดยตรง** มันให้เพียงค่าดัชนี (เริ่มต้นจาก 0) เพื่อแสดงว่าลูปได้ถูกดำเนินการไปแล้วกี่ครั้ง

วิธีดึงข้อมูลจาก For Loops

ในระหว่างกระบวนการดำเนินการ คุณสามารถเข้าถึงดัชนีลูปปัจจุบันได้โดยใช้ไวยากรณ์ตัวแปรไดนามิก: {{$.9.index}}

วิธีใช้ข้อมูลที่ดึงมาจาก For Loops

1. ใช้ข้อมูลในสคริปต์

หากคุณต้องการใช้ข้อมูลที่เกี่ยวข้องกับลูปในสคริปต์ทดสอบของคุณ คุณสามารถใช้ pm.variables.get() เพื่อรับดัชนีปัจจุบันได้:

// รับดัชนีลูปปัจจุบัน
const index = pm.variables.get("$.7.index");
ใช้ข้อมูล For loops ที่ดึงมาในสคริปต์

2. ใช้ข้อมูลร่วมกับแหล่งข้อมูลอื่น

กรณีการใช้งานทั่วไปสำหรับ For loop คือการประมวลผลข้อมูลจากขั้นตอนก่อนหน้า — เช่น การวนซ้ำผ่านอาร์เรย์และจัดการแต่ละรายการ:

// รับอาร์เรย์จากขั้นตอนก่อนหน้า
const products = pm.variables.get("$.1.response.body.products");

// รับดัชนีลูปปัจจุบัน
const index = pm.variables.get("$.7.index");

// เข้าถึงรายการปัจจุบันในอาร์เรย์โดยใช้ดัชนี
console.log(products[index]);

สิ่งนี้ช่วยให้คุณสามารถดำเนินการแบบแบตช์กับแต่ละรายการในอาร์เรย์ระหว่างการวนซ้ำแต่ละครั้ง

การดึงและใช้ข้อมูลจาก ForEach Loop

การทำงานของ ForEach Loop

ลูป ForEach ได้รับการออกแบบมาโดยเฉพาะสำหรับข้อมูลอาร์เรย์ โดยจะวนซ้ำผ่านแต่ละองค์ประกอบในอาร์เรย์โดยอัตโนมัติและดำเนินการชุดเดียวกัน

ความแตกต่างที่สำคัญระหว่าง **`ForEach loop`** และ **`For loop`** คือ `ForEach loop` จะดึงข้อมูลทั้งหมดขององค์ประกอบอาร์เรย์ปัจจุบันในแต่ละรอบโดยอัตโนมัติ ทำให้สามารถเข้าถึงได้โดยตรงในขั้นตอนย่อย

การเข้าถึงข้อมูลใน ForEach Loop

ภายใน ForEach loop ระบบจะสร้างตัวแปรพิเศษสองตัวโดยอัตโนมัติ:

หมายเหตุ: ตัวเลข 4 อ้างถึง ID ของขั้นตอน ForEach Loop ในเวิร์กโฟลว์จริงของคุณ ให้แทนที่ด้วย ID ขั้นตอนที่ถูกต้องจากกระบวนการของคุณ

กรณีการใช้งานทั่วไปสำหรับข้อมูล ForEach Loop

1. ใช้ข้อมูลในคำขอปลายทาง

ลูป ForEach เหมาะสำหรับการจัดการการดำเนินการข้อมูลแบบแบตช์ ตัวอย่างเช่น หากคุณมีอาร์เรย์ของรายการ คุณสามารถส่งคำขอปลายทางสำหรับแต่ละรายการในอาร์เรย์ได้โดยอัตโนมัติ ในแต่ละลูป เทมเพลตคำขอเดียวกันจะถูกนำกลับมาใช้ใหม่ แต่จะถูกเติมด้วยข้อมูลที่แตกต่างกัน เช่น {{$.4.element.id}}

2. ใช้ข้อมูลในการดำเนินการฐานข้อมูล

คุณสามารถใช้ข้อมูลจากรายการลูปปัจจุบันเพื่อรันการสอบถามฐานข้อมูลหรือแทรกหลายแถวได้

ตัวอย่าง: การสอบถามฐานข้อมูลโดยใช้ฟิลด์ของรายการปัจจุบัน

SELECT * FROM products WHERE id = '{{$.4.element.id}}' 

นิพจน์ {{$.4.element.id}} สามารถเข้าถึงได้โดยใช้คุณสมบัติค่าไดนามิก

การแทรกหลายฟิลด์จากรายการปัจจุบันลงในตาราง:

INSERT INTO products (id, title) VALUES ('{{$.4.element.id}}', '{{$.4.element.title}}') 

3. ใช้ข้อมูลในสคริปต์

หากคุณต้องการประมวลผลข้อมูลจากลูปเพิ่มเติมในสคริปต์ที่กำหนดเอง คุณสามารถใช้วิธี pm.variables.get() เพื่อดึงค่าได้:

// รับองค์ประกอบปัจจุบัน
const item = pm.variables.get("$.4.element");

// รับดัชนีปัจจุบัน
const index = pm.variables.get("$.4.index");

การดึงและใช้ข้อมูลจากสคริปต์

การทำงานของข้อมูลสคริปต์

ต่างจากขั้นตอนอื่นๆ ในเวิร์กโฟลว์ สคริปต์ไม่ได้สร้างเอาต์พุตที่สามารถนำไปใช้ได้โดยตรงในขั้นตอนถัดไปโดยอัตโนมัติ หากคุณต้องการส่งผ่านข้อมูลจากสคริปต์ไปยังขั้นตอนถัดไป คุณต้องจัดเก็บข้อมูลนั้นในตัวแปรด้วยตนเอง

วิธีดึงข้อมูลจากสคริปต์

คุณสามารถบันทึกค่าลงในตัวแปรประเภทต่างๆ ได้ดังนี้:

// รับข้อมูลการตอบสนอง JSON
// 1. จากการตอบสนองของปลายทางปัจจุบัน
// const currentData = pm.response.json();

// 2. หรือรับจากขั้นตอนก่อนหน้าโดยใช้ค่าไดนามิก
const preData = pm.variables.get("$.1.response.body");

// บันทึกลงในตัวแปรสภาพแวดล้อม
pm.environment.set('products', preData.products);
pm.environment.set('products_id', preData.products[0].id);

// บันทึกลงในตัวแปรส่วนกลาง
pm.globals.set('products', preData.products);

// บันทึกลงในตัวแปรชั่วคราว (ใช้ได้เฉพาะในการรันนี้เท่านั้น)
pm.variables.set('products', preData.products);

เมื่อตัวแปรถูกดึงและตั้งค่าแล้ว คุณสามารถอ้างอิงถึงตัวแปรเหล่านั้นในขั้นตอนถัดไปโดยใช้ไวยากรณ์ {{variableName}}

วิธีใช้ข้อมูลที่ดึงมาจากสคริปต์

1. ใช้ข้อมูลในคำขอปลายทาง

ตัวแปรที่ตั้งค่าในสคริปต์สามารถใช้เป็นพารามิเตอร์ได้โดยตรงในคำขอปลายทางปลายน้ำ ตัวอย่างเช่น หากคุณบันทึก products_id ในสคริปต์ คุณสามารถอ้างอิงได้ในคำขอถัดไปดังนี้: {{products_id}}

ใช้ข้อมูลที่ดึงมาในคำขอ API

2. ใช้ข้อมูลในการดำเนินการฐานข้อมูล

ตัวแปรสคริปต์ยังสามารถใช้เพื่อสร้างคำสั่ง SQL แบบไดนามิกได้ ตัวอย่างเช่น:

SELECT * FROM products WHERE id = '{{products_id}}'

3. ใช้ข้อมูลใน For Loop

คุณสามารถใช้สคริปต์เพื่อสร้างจำนวนรอบการวนซ้ำหรือค่ากลางอื่นๆ จัดเก็บเป็น "ตัวแปรชั่วคราว" และส่งผ่านไปยังขั้นตอน **For Loop** ได้:

pm.variables.set("loopCount", 5); 

จากนั้น ในการตั้งค่าลูป ให้ใช้ {{loopCount}} เป็นจำนวนรอบการวนซ้ำ

4. ใช้ข้อมูลใน ForEach Loops

คุณสามารถจัดเก็บอาร์เรย์ทั้งหมดในตัวแปรและใช้เป็นแหล่งข้อมูลสำหรับ **ForEach Loop** ได้

ตัวอย่าง:

// (เลือกได้) ดึงอาร์เรย์จากขั้นตอนก่อนหน้าโดยใช้ค่าไดนามิก
// const preData = pm.variables.get("$.1.response.body.products")

const preData = [{id: 1}, {id: 2}, {id: 3}];

// บันทึกลงในตัวแปรสภาพแวดล้อม
pm.environment.set('products', preData);

จากนั้นใน **ForEach Loop** ให้ตั้งค่าแหล่งข้อมูลเป็น {{products}}

สรุป

ในการสร้างเวิร์กโฟลว์การทดสอบอัตโนมัติที่มีประสิทธิภาพ สิ่งสำคัญคือต้องเข้าใจวิธีการดึงและใช้ข้อมูลจากขั้นตอนประเภทต่างๆ:

ด้วยการรวม**การอ้างอิงค่าแบบไดนามิก**เข้ากับการ**ดึงตัวแปร** คุณสามารถออกแบบกระบวนการทดสอบที่ขับเคลื่อนด้วยข้อมูลที่ยืดหยุ่นและทรงพลังได้

แนวปฏิบัติที่ดีที่สุดสำหรับการส่งผ่านข้อมูล:

การเลือกวิธีที่เหมาะสมตามความซับซ้อนของข้อมูลและความถี่ในการใช้งานจะทำให้เวิร์กโฟลว์ของคุณดูแลรักษาง่ายและมีประสิทธิภาพมากขึ้น

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API