feature-image-unit-test-python
feature-image-unit-test-python

เขียน Robot Framework มาได้ซักพัก เขียน Python Library มาก็เยอะ ถึงเวลาที่เราจะหันกลับมาดูเรื่องของ Unit Test ของ Python กันบ้างแล้ววววววววววว

บทความนี้คงสั้นน่าดูเลย เพราะวิธีการเขียน Unit Test บน Python ง่ายมากๆๆเลย คือแค่ทํา 3 steps นี้ก็สามารถทํางานได้ล่ะ

  1. เราประกาศ class ของเรา โดย derived ค่ามากจาก unit.TestCase
  2. ใส่ prefix หน้า functions ทุกอันว่า “test_”
  3. เรารัน test โดยการวางคําสั่ง “unittest.main()” ไว้ในไฟล์เรา โดยปกติจะไว้ล่างสุดของไฟล์

เสร็จล่ะ……แค่นี้แหละ Unit Test ใน Python

example-of-unit-test-in-python
example-of-unit-test-in-python

ที่วงไว้ข้างบนคือเรื่องของสิ่งที่ต้องทําเป็นพื้นฐานเลยของการเขียน unit test ใน python

Flow test fixture ก็ธรรมดาทั่วไปคือ

  • setUp() = ตั้งค่าก่อนการทํา test ให้ทําอะไร
  • test_xxxx() = ตัว test cases เอง
  • tearDown() = หลังจาก test เสร็จให้ทําอะไร

แล้วพอรันเทสเราก็ต้องตรวจสอบความถูกต้อง ก็ใช้ท่ามาตราฐานเลยคือ

  • assertEqual(a,b,msg=None)
  • assertNotEqual(a, b, msg=None)
  • assertTrue(x, msg=None)
  • assertFalse(x, msg=None)

เห็นไม๊ การเริ่มต้นเขียน Unit Test ใน python ง่ายมากๆ แค่เราต้องรู้ 3 steps ข้างบนแค่นั้นเอง

ถ้าอยากอ่านรายละเอียดตัวเต็มไปที่ Official Python Unit testing framework เลย

จริงๆการเขียน Unit testing ยังไม่หมดแค่นี้หรอก มันยังมีเรื่องของการ Mock, Stub services ที่เราไม่ต้องการใช้ หรือการจัดการ Object อีกหลากหลายแบบ แต่ ณ เวลานี้ เริ่มต้นให้สร้างไฟล์เป็น รันได้ และรู้โครงสร้างก่อนก็พอ

Noted:

เวลาที่เราไปเขียน Unit testing จริงๆ เราจะต้องไปเขียน against กับไฟล์อื่นๆแน่ๆ เพราะฉะนั้นเราเวลาเราทํา ก็จะต้องใช้การ Import ไฟล์นั้นๆเข้ามา เช่นต่อไปนี้

example-of-import-module-python
example-of-import-module-python

อันนี้เป็นตัวอย่างแบบธรรมดาสุดๆเลยนะ เราสามารถทําให้ได้ดีกว่านี้ก็แยก ไฟล์ต่างๆไปลง constructor __init__(self) ก็ได้แล้ว ดีกว่าเยอะ

วิธีการ import เข้ามาอีกแบบนึง ซึ่งทําให้เราเลือก items ที่เราจะโหลดได้ด้วยคือท่านี้

example-of-python-specific-import
example-of-python-specific-import

จะเห็นว่ามันจะ import แค่ “helloparagraph” เข้ามาจากไฟล์ HelloWorld นั้นเอง ด้วยวิธีนี้ทําให้เราสามารถเพิ่มความสามารถในการ readable ได้มากเลยว่าเราต้องการอะไร? และ ไม่เอา layer อื่นๆเลย (อ่านต่อจากที่นี้เลย Wikibooks)

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

newest oldest most voted
trackback

[…] Python Unit Test 101, Test Double in […]