Chapter 04 - What Are We Doing with All These Tests?
ในการ test ครั้งนี้จะเป็นการ test ในส่วนของ การ รันค่าจากไฟล์ html ที่ตั้งให้เป็นHome page ซึ่ง Home page ในที่นี้จะมีโค้ด HTML ที่จะ render ให้ client ผู้ซึ่ง request เข้ามา
โดย functional_tests.py นี้นั้นโดยที่รู้ ๆ กันอยู่ว่า เป็นในส่วนของกา
output ตรงตาม concept ที่ตั้งใจไว้หรือเปล่า โดยจะมีการเรียกใช้ function ในการตรวจสอบ
อย่างเช่น self.assertIn('To-Do', self.browser.title)
เป็นการตรวจสอบค่า ที่อยู่ใน title ของ browser ของเราว่ามีคำว่า 'To-Do' หรือเปล่าหากไม่มีก็จะขึ้น error และปิดโปรแกรมลง ตามฟังก์ชัน teardown(self){...} (เป็นฟังก์ชันที่จะเรียกใช้เมื่อมีการ error)
ของ platform หรือมีการ return ค่าออกมาเป็น เท็จ (ไม่เห็น object)
ในตอนแรกนั้น functional_tests.py จะทำการเรียก server ที่รันไว้ ที่ localhost:8000 จากในบรรทัด
self.browser.get('http://localhost:8000') โดย urls.py ก็จะทำหน้าที่ส่งต่อให้ function home_page ในไฟล์ lists/views.py โดยไฟล์ views.py นั้นก็จะทำหน้าที่โดยการแสดง home page ออกมา ซึ่งโค้ดนั้นจะถูกตรวจสอบโดย test.py ว่าถูกต้องตามหลักไวยากรณ์ไหม มีแทกอะไรที่ขาดไปบ้างจาก platform ที่เราต้องการ
เช่น ใช้ฟังก์ชั่น
self.assertIn(b'<title>To-Do lists</title>', response.content)หมายความว่าให้เช็คว่าในข้อความที่ได้ response ออกมานั้นมีคำว่า '<title>To-Do lists</title>' หรือไม่
หลังจากที่เราสร้างไฟล์เรียบร้อยแล้วก็ให้ใส่ code ลงไปในไฟล์โดยเริ่มต้นให้ลองใส่
|
เมื่อได้ทดสอบเขียนโค้ดดูแล้วลองรันโดย $ python3 manage.py test
ซึ่งในตอนแรกนั้นยังไม่ได้ทำการสร้างไฟล์ home page ก็มี error แจ้งเตือนขึ้นมาว่าไม่พบไฟล์ดังกล่าว ต่อมาจึงสร้างไฟล์ home.html ขึ้นใน directory -> lists/templates/ และทำการเขียนโค้ดลงในไฟล์ และเพิ่มโค้ดลงในส่วนของ settings.py file
ซึ่งในตอนแรกนั้นยังไม่ได้ทำการสร้างไฟล์ home page ก็มี error แจ้งเตือนขึ้นมาว่าไม่พบไฟล์ดังกล่าว ต่อมาจึงสร้างไฟล์ home.html ขึ้นใน directory -> lists/templates/ และทำการเขียนโค้ดลงในไฟล์ และเพิ่มโค้ดลงในส่วนของ settings.py file
|
error ที่แจ้งเตือนว่าไม่พบไฟล์นั้น ได้หายไปแล้วกลายเป็นแจ้งเตือน error เกี่ยวกับ code ที่ return ค่า
กลับมาแทน หลังจากนั้นทดสอบเปลี่ยน code ที่ test.py โดยให้ที่การแบ่งค่าออกมาเป็น บรรทัดแทน
|
ทดสอบดูอีกที $ python3 manage.py test ได้ผลลัพธ์ออกมาว่า การตรวจเช็ตไม่มีข้อผิดพลาดของ syntax
สามารถเปลี่ยนรูปแบบโค้ดเป็นการ decode ได้โดยเปลี่ยนรูปแบบ code ของ tests.py
|
โดยผลที่ได้ก็จะเหมือนเดิม
ทดสอบการเปลี่ยนโค้ดของ home.html
ทดสอบการเปลี่ยนโค้ดของ home.html
|
โดยโค้ดในส่วนของ input นั้นจะเป็น input ในรูปแบบ default คือ textbox โดยที่ functional_tests.pyจะมีโค้ด inputbox = self.browser.find_element_by_id('id_new_item') ที่จะนำเอาค่า ของ object ใน
id : id_new_item เก็บไว้ในตัวแปรที่ชื่อ input เมื่อโปรแกรมเรียกใช้คำสั่ง
self.assertEqual(inputbox.get_attribute('placeholder'),'Enter a to-do item') ก็จะมีการเช็คค่า ว่าค่า placeholder ใน object นั้นตรงกับ 'Enter a to-do item' หรือเปล่า หากไม่ตรงก็จะ error และไปที่
function teardown โดยอัตโนมัติ ลองเพิ่ม หลังจากนั้นก็ทำการ git commit ค่าที่เปลี่ยนแปลงไป




ไม่มีความคิดเห็น:
แสดงความคิดเห็น