ใช้ Robot framework ระวังเรื่องการประกาศ Variable กันนะ

KakyKad
2 min readAug 17, 2022

--

วันนี้มาแชร์ปัญหาที่เพิ่งจะเจอไปหมาดๆ ที่ดั๊นลืมไปได้ไงไม่รู้เหมือนกัน ฮ่าๆ

เคยไหมกับการประกาศใช้ ตัวแปรหรือ 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 บอกว่าเป็นตัวแปรเดียวกัน

สาระสำคัญมีอยู่แค่นี้แหละ ย่อหน้าแรกเป็นเกริ่นนำ ฮิๆ

--

--