วันนี้มาแชร์ปัญหาที่เพิ่งจะเจอไปหมาดๆ ที่ดั๊นลืมไปได้ไงไม่รู้เหมือนกัน ฮ่าๆ
เคยไหมกับการประกาศใช้ ตัวแปรหรือ variable แล้วเจอ error แปลกๆกันบ้างไหม
เช่น
Resolving variable ….
- Type error : string indices must be integers
- KeyError: something keyword
เนื้อหาใน blog นี้จะเป็นตัวอย่างที่ทำจาก Robot framework + Request Library นะ
ซึ่งกาดใช้เวลาในการไล่เช็คค่อนข้างนานเลยทีเดียว เพราะ error ที่ robot คืนมาให้มันมีแค่นี้เอง จนเพิ่งนึกได้ว่าทำไมไม่เปิด mode debug มาช่วยกันนะ? =3= เพื่อที่จะหาว่า step ไหนกันแน่ที่มันทำให้ error จริงๆ
กาดใช้ Editor ชื่อ VS Code แล้ว Download Extension ที่ชื่อว่า “Robot Framework Language Server”
ตอนที่ติดตั้งเสร็จแล้ว ตรง *** Test Cases *** จะมีลิ้งให้เลือก Run|Debug|…
ให้เราทำการเลือก Debug (ก่อนจะเลือก Debug ไปจิ้มจุดแดงที่จะ break ก่อนนะ)
หลังจากเลือกจุดที่ break แล้ว ในซ้ายมีจะมีช่องที่เขียนว่า Watch ให้ลองใส่ตัวแปรที่เรา set ไว้ว่าเราอยากรู้อะไร
เช่น กาด set ${URI} มีค่า = Mock = /api/mock
เมื่อ Debug มาถึง line ที่ Break จะเห็นตัวแปร ${URI} : Mock = /api/mock
หลังจิ้ม step ไปเรื่อยๆ มาสังเกตเห็นอะไรแปลกๆเข้าพอดี
จะสังเกตเห็นว่า ตัวแปร ${URI} : Mock = /api/mock ถูกเปลี่ยนเป็น ${URI} : /api/mock แทน
ทำให้ Step ถัดไป Error เนื่องจากเราตั้งไว้ ${URI[“Mock”]} เอาไว้ในการ call api
เพราะ Step ก่อนหน้ากาดมีการส่ง value เข้าตัวแปรที่ชื่อว่า ${uri} ทำให้ของที่ส่งเข้า value ผ่านตัวแปร ${uri} (ที่เป็นตัวพิมพ์เล็ก) โดนทับเข้า ${URI} ทำให้ Step ถัดไป error เพราะ robot หาค่าที่เราตั้ง ${URI[“Mock”]} ไม่เจอ
ที่กาดพลาดเรื่องง่ายๆแบบนี้ เพราะบางทีเคยเจอที่ว่า ตัวเล็ก ตัวใหญ่ มันมองว่าเป็นคนละตัวแปร เลยมาพลาดกับเจ้า Robot framework แทนเลย
ดังนั้น การประกาศตัวแปรที่จะใช้งานแต่ละตัวของ Robot framework ให้ระวังเรื่องพิมพ์เล็กพิมพ์ใหญ่นะ เพราะ Robot บอกว่าเป็นตัวแปรเดียวกัน
สาระสำคัญมีอยู่แค่นี้แหละ ย่อหน้าแรกเป็นเกริ่นนำ ฮิๆ