Monday, April 16, 2018

TDD : Test-Driven Development Python Part 3

      สวัสดีครับ ใน part 3 เราจะมาลองเขียน unit test กันนะ โดยรายละเอียดของ unit test ผมจะแปะลิงค์ไว้ให้นะครับ

http://softwaredevii.blogspot.com/2018/04/knowledge-what-test.html

ก่อนที่เริ่ม unit test เราจะมาสร้าง app ก่อนนะ


เมื่อเราได้ app แล้ว เราก็จะได้เริ่มเขียน unit test ซะที โดยให้ไปหา file tests.py ใน app ของเรา


จากนั้นเขียน unit test แบบง่ายๆตามนี้ครับ


จากนั้นให้ run test ดู


จะพบว่ามัน Error ซึ่งเป็นที่แน่นอนอยู่แล้วเพราะการเขียน test ครั้งแรกเราจงใจให้มัน error ก่อนเพื่อดูว่า code ทำงานได้เป็นปกติ ปล. ตรงนี้เป็น smoke test นะอ่านได้ที่บทความ "What the TEST" ในหมวด Knowlage ได้เลย

เนื่องจากว่าเจ้า Django เนี่ยมันเป็น MVC เนื้อหาตรงนี้จะแปะลิงค์ให้เช่นเคยนะ

http://softwaredevii.blogspot.com/2018/04/mvc-or-model-view-controller.html

ดังนั้นต่อมาเราจะมา test homepage กัน ไปที่ไฟล์ tests.py ใน app lists เช่นเดิมแล้วเขียน code ตามนี้


จากนั้นให้ run test ดู


จะพว่ามัน error ว่าไม่สามารถ import home_page แน่นอนมันต้อง import ไม่ได้เพราะ "เรายังไม่มี home page" ดังนั้นเราจะไปทำ home page กันก่อน

โดยการทำ home page นั้นให้ไปที่ views.py ที่อยู่ใน folder lists ของเรา แล้วเขียน coed ตามนี้


ทุกคนจะเกิดคำถามว่า "เฮ้ย! เขียนแค่นี้อะนะ" ใช่ครับ เราจะเขียนไปเท่านี้ก่อนที่เหลือค่อยว่ากัน จากนั้นให้ run test


จะพบมัน error แปลกๆ ซึ่งเราควรจะอ่าน Traceback เหล่านี้เพราะมันจะอกเราได้ว่า มัน error อะไร
จากที่อ่านเราสามารถสันนิษฐานได้ว่า "เราต้อง URL mapping." ดังนั้นเราจะไปทำ URL mapping กัน
โดยไปที่ urls.py ใน folder superlists ของเรา แล้วเขียน code ตามนี้



จากนั้นให้ run test


ก็จะ error แปลกๆเช่นเคย แต่ถ้าอ่านดีๆเราจะพบว่ามัน error
TypeError: view must be a callable or a list/tuple in the case of include().
ซึ่งหมายความว่า error อันเก่าได้ถูกแก้ไขแล้วแต่ตอนนี้มัน error เพราะว่าใน views.py ของเรา 
มีปัญหา เนื่องจาก home_page มันเท่ากับ none เราจึงต้องไปแก้ไขมัน

โดยให้เรากลัไปที่ file views.py แล้วเขียน code ตามนี้


จากนั้นให้ run test


จะพบว่ามันไม่ error อะไรแล้ว นั่นความหมายว่า test ผ่านหมด

ในเมื่อ test ผ่านหมดแล้วเราก็จะมาทำ code ให้ดีขึ้นกันโดยเริ่มจากเราจะมาทำให้ app ของเรา return เป็น html จริงๆ โดยให้ไปที่ไฟล์ tests.py ใน folder lists แล้วเขียน code ดังนี้


จากนั้นให้ run test


จะพบว่ามัน error เพราะว่า home_page() ของเรานั้นไม่มีการส่ง arguments มาให้ดังนั้นเราต้องไปแก้ที่ function home_page() ในไฟล์ views.py ที่อยู่ใน lists ก่อน โดยเขียน code ดังนี้


จากนั้นให้ run test


จะพบว่า error ดังกล่าวได้หายไปแล้ว ก็ขอจบบทความนี้เพียงเท่านี้ก่อนนะ วันนี้เหนื่อยแล้วขอพักแปปป อย่าลืม commit ละ

อันนี้ run test functional นะ


No comments:

Post a Comment