CH4 :
- Don't test constants and test HTML as text
- refactoring การปรับปรุง ให้ดียิ่งขึ้น
When refactoring, work on either the code or the tests, but not both at once.
การปรับปรุง เกิดขึ้นในตอน เขียนโค้ด หรือ การทดสอบ แต่ จะไม่เกิดขึ้นพร้อมกัน
ขั้นตอนการทำงาน เพิ่มเติม
1 . ทำ functional_tests
2 . Unit tests
3 . (unit_test / code cycle)
4 . refactoring ปรับปรุง พัฒนา (เปลี่ยนโค้ด แต่การทำงานเหมือนเดิม)
เช่น a = a + 1 อาจจะเป็น a += 1 ?
ทำฟังก์ชั่นเทส ไม่เจอข้อผิดพลาด ? > จะปรับปรุงโค้ดมั้ย ?
เจอ ไป ทำการแก้ไขใน Unit test
unit test เจอข้อผิดพลาด > แก้ไข > ปรับปรุงโค้ดมั้ย ?
ไม่เจอ > ทำ unit test ที่ละเอียดขึ้น
แล้วก็วนไปที่ฟังก์ชั่นเทสใหม่เมื่อจบกระบวนการ
CH 5 :
importtimetime.sleep(10)
ช่วยในการยื้อเวลาเพื่อช่วยในการ สังเกตุหน้าผลลัพธ์ ได้ ก่อนที่ เบราเซอร์จะปิดลง{% csrf_token %}
นั้นเป็น input ชนิด hidden (ดังนั้นการเทส จะมีปัญหาเนื่องจากมันจะเป็นการสุ่มตลอด)
render_to_stringใช้สำหรับแปลง เป็น string โดย ต้องใส่ argument คือ template กับ ตัวแปรที่จะใช้แทนค่า
เพิ่งรู้ว่าสามารถ กำหนด ค่า default ให้ get ได้ https://docs.python.org/3/library/stdtypes.html#dict.getreturnrender(request,'home.html',{'new_item_text':request.POST.get('item_text',''),})
Red / Green / Refactor and Triangulation
The unit-test/code cycle
1 . เขียน Unit test (ที่มันเฟล ) (Red)
2 . ทำวิธีที่ง่ายที่จะทำให้มันผ่าน (Green) ถึงแม้ ว่ามันจะเป็นการโกงก็ตาม
3 . ทำให้โค้ดดูเข้าท่ามากกว่าเดิม หรือดูสมเหตุสมผลมากขึ้น
Object-Relational Mapper (ORM)
Classes map to database tables, attributes map to columns, and an individual instance of the class represents a row of data in the database.
Unit test ไม่ควรจะไปยุ่งกับ Data base
integrated test เป็นการ ทดสอบที่ถูกต้องมากขึ้นโดยจะไม่ได้ตรวจสอบแค่ code แต่จะตรวจสอบอย่างอื่นเช่น data base ด้วย
an HTTP redirect hould have status code 302
- ในการทดสอบแต่ละครั้ง ควรทดสอบ อย่างเดียวเท่านั้น เพื่อให้ง่ายต่อการตรวจสอบ
Unit test ใน Django ผ่าน ไม่ได้หมายความว่า functional_test จะผ่านด้วยเพราะว่า Django จะสร้าง ฐานข้อมูลพิเศษ สำหรับการใช้งาน TestCase เพื่อทดสอบ Unit test
ไม่มีความคิดเห็น:
แสดงความคิดเห็น