พอดีช่วงนี้ต้องมาทำ script ดึงข้อมูลจาก Excel ด้วย Robot Framework เลยทำให้ต้องเขียนตัวแปลง format ข้อมูลอยู่บ่อยๆ ปัญหาที่มักจะเจอเลยคือ ค่า None จากที่ลองเช็คตาม internet ดู มีหลากหลายวิธิในการจัดการกับเจ้า None ว่าแล้วก็มาดูกันเลยครับ
เช็ค None ตรงๆเลย
${text} = Set Variable If ${text} == ${None} ${EMPTY} ${text}
Should Be Equal ${text} ${None}
วิธีนี้ สำหรับใครที่เขียนโปรแกรมมาก่อนอาจจะเป็นตัวเลือกแรกๆที่นำมาลองใช้ แต่ก็ต้องผิดหวังกลับไปถ้า text ของเราไม่ใช่ค่า None ก็จะเกิด error ขึ้นครับ วิธีนี้ไม่ผ่านครับ
เช็คโดยการเทียบแบบ String
${text} = Set Variable If "${text}" == "${None}" ${EMPTY} ${text}
Should Be Equal ${text} ${None}
วิธีนี้จะถูกแนะนำบ่อยมาก รวมถึงเวลาหาใน Stack overflow แต่วิธีนี้ก็มีปัญหาเช่นกัน กรณีที่ ${text} เป็น string ที่มีอักษรพิเศษ ” เช่น “John” Smith ก็จะทำให้เกิด error ขึ้นจากการไปใส่ double quote ครอบ
เช็คโดยใช้ Robot keyword มาช่วย
${isNotNone} = Run Keyword And Return Status Should Not Be Equal ${text} ${None}
วิธีนี้จะไม่ error แต่ก็เป็นการ work around โดยการใช้การรัน keyword และ validation keyword มาช่วยนั่นเอง
ใช้ Python function มาช่วย
${text} = Set Variable If $text is None ${EMPTY} ${text}
จะเห็นว่าใน condition เราสามารถเรียกใช้งานตัวแปล $text แบบไม่มี {} ครอบ และใช้ is None แบบที่เรียกใน python เลย วิธีการนี้จะช่วยให้เราตรวจสอบตัวแปลแบบตรงไปตรงมาที่สุด
ที่ทำแบบนี้ได้เพราะ Set Variable If ในส่วนของ condition robot framework จะใช้ python eval มาทำการรัน condition ที่เรากำหนดไว้ นอกจาก Keyword Set Variable If แล้วก็ยังมี Keyword Run Keyword If และ Should Be True ที่รองรับครับ