Blog ของ Robot framework ก็ดำเนินมาถึงเรื่องราวที่ซับซ้อนมากยิ่งขี้นแล้ว โดยคราวนี้เราจะมาคุยกันเรื่องการพัฒนา Library ไว้ใช้เองครับ โดยปกติแล้วเรามักจะไปหา Library ของ Robot framework จาก 3rd parties จากหลายๆแหล่งมาช่วยในการพัฒนาให้การเขียน test script ทำได้ง่าย และสะดวกยิ่งขึ้น แต่บางกรณีอาจพบว่า Library ที่มีอยู่แล้วไม่ตอบโจทย์รูปแบบการทดสอบของ Application ของเรา ทำให้บางครั้ง การพัฒนา Library มาใช้เอง ก็เป็นตัวเลือกที่ดีเช่นกันครับ
เมื่อไหร่เราควรพัฒนา Library ไว้ใช้เอง
หากเราหา Library ในตลาดแล้วไม่พบ Library ที่เหมาะกับการใช้งานของเราเลย และการใช้งาน จำเป็นต้องใช้ซ้ำๆในหลายๆส่วน และยากที่จะเขียนให้อยู่ในรูปแบบ Keyword หรือ Resource file ได้ครับ เพราะการที่เราพัฒนา Library ไว้ใช้เอง ก็จำเป็นต้องคอยดูแล และอัพเดทให้ Code ยังใช้งานได้อยู่เสมอ
รูปแบบการพัฒนา Library ไว้ใช้เอง
หลักๆเลยผมมักนิยม 2 เทคนิคนี้ครับ
- เขียนเป็น Function ด้วย Python อยู่ใน file เดียว แล้ว include Python file ไปใช้ตรงๆเลย อันนี้มักใช้ในกรณีที่ function ไม่ซับซ้อนมากนัก เช่นต้องการ function ช่วยคำนวนเรื่องของวันทำงานใน 1 เดือน และหักวันหยุดเสาร์ อาทิตย์ออก เป็นต้น
- สร้างเป็น Library แบบเดียวกับที่เรานิยมใช้งานกัน ตัวอย่างเช่น Selenium Library นั่นเอง โดยการสร้าง Library แบบนี้ ยังแบ่งแยกย่อยได้คือ Static Library, Dynamic Library และ Hybrid Library (เอาไว้มาคุยกันในบทความต่อๆไปครับ)
Tools ที่ในการใช้เขียน Library
เนื่องจากการเขียน Library ค่อนข้างมีความซับซ้อน ผมจึงมักใช้ PyCharm ในการเขียน เพราะสามารถสั่ง Execute Test, Debug และ รองรับการใช้งาน virtualenv ได้อย่างครบครัน
ตัวอย่าง Python Function
Code ด้านล่างเป็นตัวอย่าง Python Function สำหรับการแปลงค่าเงินจาก USD ไปเป็นค่าเงินประเทศอื่นๆ โดยอ้างอิงจาก exchangerate-api.com ครับ
import requests def convert_usd_to(currency, amount): url = 'https://api.exchangerate-api.com/v4/latest/USD' response = requests.get(url) data = response.json() return data['rates'][currency] * float(amount)
การเรียกใช้งานผ่าน Robot Test script ก็เพียงแค่ import library ไปยัง file currency_coverter.py ตรงๆได้เลยครับ
*** Settings *** Library currency_converter.py *** Test Cases *** Demo how to call python function ${thb} = Convert Usd To THB 20 Log ${thb}
ตัวอย่าง source code จาก Github ตาม link นี้ครับ
บทความหน้าเรามาดูการเขียน Robot Library
แบบเจาะลึกกันครับ