วันอาทิตย์ที่ 26 มีนาคม พ.ศ. 2560

Building Software II : Test-Driver Development With python Tutorial .2

สิ่งที่ได้เรียนรู้เพิ่มเติมจาก บท

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 :

    import time
    time.sleep(10)
 
 
ช่วยในการยื้อเวลาเพื่อช่วยในการ สังเกตุหน้าผลลัพธ์ ได้ ก่อนที่ เบราเซอร์จะปิดลง

{% csrf_token %}
 
 
นั้นเป็น input ชนิด hidden (ดังนั้นการเทส จะมีปัญหาเนื่องจากมันจะเป็นการสุ่มตลอด)

render_to_string

ใช้สำหรับแปลง เป็น string โดย ต้องใส่ argument คือ template กับ ตัวแปรที่จะใช้แทนค่า

    return render(request, 'home.html', {
        'new_item_text': request.POST.get('item_text', ''),
    })
เพิ่งรู้ว่าสามารถ กำหนด ค่า default ให้ get ได้ https://docs.python.org/3/library/stdtypes.html#dict.get

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










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

แสดงความคิดเห็น