ยินดีต้อนรับกลับ.
มาเขียนการทดสอบครั้งแรกของเราตอนนี้
เราจะมีฟังก์ชันง่ายๆ ที่เราเรียกใช้ในโปรแกรมนี้
เราจะสร้างในไฟล์หลักของเรา สมมุติว่าทำให้มันใหญ่ขึ้นอีกนิด
เราจะบอกว่าเรามีฟังก์ชันที่เรียกว่าทำสิ่งต่างๆ
ใช่ ฟังก์ชั่นที่อธิบายได้ดีมาก
ในนี้เราจะบอกว่าเรายอมรับตัวเลข
และเราก็แค่คืนค่า num บวกห้า
ฟังก์ชั่นที่ง่ายมาก
สมมติว่านี่คือรหัสของเราที่สร้างแอปของเรา
นี่จึงเป็นเพียงฟังก์ชันเดียว
แต่โดยสมมุติฐาน เรามีฟังก์ชันมากมายที่เราต้องการทดสอบ เนื่องจากเป็นการดำเนินการที่เราจะดำเนินการในโค้ดของเรา
ดังนั้นวิธีการทำงานของการทดสอบหน่วย
เป็นเช่นนี้แล.
เรามีไฟล์ทดสอบและหลังจากที่เรานำเข้าการทดสอบหน่วยแล้ว เราต้องการนำเข้าไฟล์ที่เราต้องการทดสอบในกรณีของเราว่าเป็นไฟล์
py หลัก
งั้นเรามานำเข้ากัน
หลัก.
ซึ่งอยู่ตรงนี้
หรือเราสามารถนำเข้าฟังก์ชันได้เช่นกันหากต้องการ
แต่ในกรณีของเรา ตามสมมุติฐาน เรามีฟังก์ชันมากมายที่นี่ ดังนั้นเราจึงสามารถนำเข้า main และใช้ฟังก์ชันทั้งหมดที่มีได้
ตอนนี้วิธีการทำงานของการทดสอบหน่วยคือเราสร้างคลาสแล้วตั้งชื่อตามที่คุณต้องการ
และที่นี่เราจะมีการทดสอบทั้งหมดของเรา
เรียกมันว่าการทดสอบหลัก
และเราสืบทอดภายในคลาสนี้ว่าการทดสอบหน่วยให้อะไรแก่เรา ซึ่งก็คือการทดสอบ
นี่เป็นเพียงวิธีมาตรฐานในการทำงานกับการทดสอบหน่วย
ดังนั้นเราจึงสืบทอดกรณีการทดสอบหน่วยใด ๆ และตอนนี้เรามีฟังก์ชันดังกล่าวในคลาสทดสอบหลักของเรา
ที่นี่ เราสามารถเริ่มการทดสอบและเขียนโค้ดเพื่อทดสอบได้
แล้วเราจะทดสอบ main ได้อย่างไร?
ทำหน้าที่สิ่งของ
เราแค่พูดว่า เฮ้ มาเขียนฟังก์ชันที่นี่หรือเมธอดกัน เพราะนี่เป็นส่วนหนึ่งของคลาสแล้วพูดว่า
เฮ้ ฉันต้องการทดสอบ ทำสิ่งต่างๆ
และในนี้ก็จะรับเอง
ในที่นี้ ฉันสามารถทดสอบโค้ดของตัวเองได้ ดังนั้นฉันจึงบอกได้ว่าตัวเลขในนี้เท่ากับสิบหรือไม่ ฉันแค่ให้มันเป็นตัวเลขสุ่ม
แล้วผมจะบอกว่าผลลัพธ์จะเท่ากับ main dot do สิ่ง
จำไว้ว่า การทำสิ่งต่างๆ มาจากรัฐเมน ซึ่งเป็นฟังก์ชันที่เราต้องการทดสอบ
ดังนั้นฉันต้องการเรียกใช้ฟังก์ชัน do stuff และในนี้ให้พารามิเตอร์ num ซึ่งฉันเพิ่งให้ไว้ที่นี่หรือเรียกการทดสอบนี้ว่า
param
ดังนั้นการทดสอบนี้ เราจะรันโค้ดและได้ผลลัพธ์
และบรรทัดสุดท้ายนี้เป็นส่วนสำคัญของการทดสอบหน่วย
การทดสอบหน่วยช่วยให้เราสามารถพูดว่า self dot, assert equal และ assert equal เป็นสิ่งที่เราได้รับเมื่อเราสืบทอดจากการทดสอบหน่วยและยืนยันเท่ากับว่า
hey assert
หรือตรวจสอบให้แน่ใจว่าพารามิเตอร์ทั้งสองนี้เท่ากัน
ในกรณีของเรา ผมต้องการทดสอบว่าผลลัพธ์เท่ากับ ดี ในกรณีของเรา สิบ
บวกห้าควรเท่ากับ 15
ไม่เป็นไร.
ในที่สุด เราก็ทำการทดสอบหน่วย
และวิธีที่เราใช้ทดสอบหน่วย เพราะนี่เป็นเพียงการทดสอบเดียวที่ฉันทำ
ฉันสามารถทำการทดสอบได้หลายครั้ง
ทั้งหมดที่เราต้องพูดคือการทดสอบหน่วยดอทหลัก
ซึ่งจะเรียกใช้ไฟล์ทดสอบทั้งหมดภายในการทดสอบหลัก
ตอนนี้ ถ้าฉันเรียกใช้ตอนนี้ ทั้งหมดที่ฉันต้องทำคือพูด Python สาม บรรทัดคำสั่งของฉัน และพูดว่า Test dot pi
และฉันได้รับ
OC ทำการทดสอบหนึ่งครั้งด้วยความเร็วสูงสุดและ 0 วินาที
นั่นเป็นสิ่งที่ดีและรวดเร็ว
สมมุติว่าผมทำอย่างอื่นโดยที่ผมยืนยันว่านี่เท่ากับสิบ
ถ้าฉันเรียกใช้สิ่งนี้
ดูนั่น.
ฉันได้รับความล้มเหลว?
อะไรล้มเหลว?
การทดสอบเพื่อทำฟังก์ชันล้มเหลว
ในบรรทัดที่แปด
นั่นคือตรงนี้ เรามีข้อผิดพลาดในการยืนยัน
เราได้ 15 แต่คาดว่าสิบ
มันเจ๋งแค่ไหน?
ตอนนี้ฉันมีความล้มเหลวหนึ่งรายการ ดังนั้นฉันต้องแก้ไขรหัสของฉัน
มีบางอย่างไม่ถูกต้องที่นี่
ในกรณีของฉัน นี่เป็นเพราะฉันยืนยัน
คำตอบข้อ ข 15
แต่ถ้าเราสร้างการทดสอบอื่นที่นี่ล่ะ
และตรวจสอบ
เฮ้ ถ้าเรามี test do เหมือนกันล่ะ
และคราวนี้โปรแกรมทดสอบจะเป็นชิ้นส่วนของสตริง
แล้วเราต้องการให้ฟังก์ชันทำอะไร?
ในกรณีของเรา บางทีมันทำให้เรามีข้อผิดพลาด บางทีอาจเป็นข้อผิดพลาดของค่า
ดังนั้นฉันจะบอกว่าค่า
เพราะสิ่งนี้ไม่ควรทำงาน
ถ้าฉันเรียกใช้ตอนนี้ ให้เคลียร์สิ่งนี้
ถ้าฉันเรียกใช้ตอนนี้
เอาล่ะ ฉันมีการทดสอบสองครั้ง
แต่ฉันมีทายาทหนึ่งคน และฉันเห็นที่นี่ว่าฉันได้ทายาทบอกว่า เฮ้ ฉันได้ตัวพิมพ์ดีดที่เชื่อมสตริงได้เท่านั้น
ไม่ใช่แปด
ทีนี้ ในกรณีนี้ อะไรที่ล้มเหลวจริงๆ?
เป็นไฟล์ทดสอบเพราะสิ่งที่เราเพิ่งทำไปจริง ๆ แล้วล้มเหลวคือฟังก์ชัน
แต่เดี๋ยวก่อน
ฉันเห็นว่า
ไม่เป็นไร.
นี่คือสิ่งที่เราต้องแก้ไข เพื่อที่ฉันจะได้กลับไปที่เมนแล้วพูดว่า เฮ้ ฉันต้องการให้แน่ใจว่าเราตรวจพบข้อผิดพลาด
เช่นข้อผิดพลาดประเภทหรือข้อผิดพลาดด้านค่า
อย่างแรกที่ฉันทำได้คือบอกว่าไม่ใช่
ตัวเลข.
และถ้าฉันบันทึกมันไว้ เพื่อให้แน่ใจว่าเราแปลงบางอย่างเป็นจำนวนเต็ม แล้วฉันเรียกใช้สิ่งนี้
เอาล่ะ ตอนนี้ฉันได้รับข้อผิดพลาดของค่าใน value literal ดังนั้นจึงไม่สามารถรันบนสตริงนี้ได้
โอเค อีกสิ่งหนึ่งที่เราสามารถทำได้เพื่อปรับปรุงโค้ดของเราคือลองรวมมันไว้ในลอง ยกเว้นการเขียนบล็อก จากนั้นเราจะจับได้
เอาเป็นว่ายกเว้น
และในที่นี้ยอมรับค่าผิดพลาด
และสมมุติว่าเป็นข้อผิดพลาด
และที่นี่ เราสามารถทำทุกอย่างที่เราต้องการ
ดังนั้นเราจึงสามารถกลับมาได้ถ้าเราต้องการข้อผิดพลาดหรือเราสามารถยกอากาศได้
ในกรณีของเรา เราก็แค่คืนอากาศ
และฉันจะแสดงให้คุณเห็นว่าทำไมในอีกสักครู่
ตอนนี้ถ้าฉันวิ่งนี้
คุณเห็นว่าการทดสอบของฉันล้มเหลว แต่ตอนนี้ มันเป็นข้อผิดพลาดในการยืนยัน
ข้อผิดพลาดในการยืนยันมาจากไฟล์ทดสอบของเราตรงนี้ และฉันขอยืนยันว่า เฮ้ ฉันต้องการให้แน่ใจว่าผลลัพธ์และค่าที่ผิดพลาดนั้นเท่ากัน
ตอนนี้คุณเห็นตรงนี้แล้วว่ามีบางอย่างที่ไม่ตรงกัน
เรามีค่าผิดพลาดตรงนี้ไม่เท่ากับค่าคลาดเคลื่อนของค่าคลาส
นี่เป็นเคล็ดลับเล็กน้อยเนื่องจากเราส่งคืนข้อผิดพลาด
เป็นตัวอย่างของคลาสข้อผิดพลาดของค่า
เราจึงต้องทำอะไรแบบนี้
เราต้องบอกว่า เฮ้ เป็นตัวอย่าง
และพูดว่ามันคืออะไร?
ก็เป็นผลอินสแตนซ์ของค่าผิดพลาดเช่นนี้
แต่ปัญหาที่นี่
เรามาทำให้มันใหญ่ขึ้นอีกหน่อยเถอะ
ปัญหาในที่นี้คือการยืนยันเท่ากับกำลังคาดหวังสองพารามิเตอร์ สองสิ่งที่ต้องเท่ากัน
แต่ที่นี่ฉันแค่ต้องการให้แน่ใจว่าสิ่งนี้ส่งคืนจริง ผลลัพธ์คืออินสแตนซ์ของข้อผิดพลาดของค่า
แล้วฉันจะทำอย่างนั้นได้อย่างไร?
นอกจากการยืนยันว่าเท่ากันแล้ว เรามีวิธีอื่นๆ อีกสองสามวิธีที่การทดสอบหน่วยให้เรา
ถ้าฉันไปที่เอกสารประกอบการทดสอบหน่วยที่นี่ในบรรทัดแรก จะระบุรายการวิธียืนยัน
ดังนั้นที่นี่ฉันเห็นว่านี่คือวิธีการทั้งหมดสำหรับการยืนยันและทดสอบโค้ดของเรา
สิ่งที่เราอาจต้องการคืออันนี้ยืนยันว่าจริง
เพื่อตรวจสอบว่ามีอะไรจริงหรือไม่
ดังนั้นถ้าฉันยืนยัน
ว่านี่เป็นเรื่องจริง
และฉันทำการทดสอบ
มาเคลียร์กันและทำการทดสอบอีกครั้ง
ไปเลย
ฉันทำการทดสอบสองครั้งและทุกอย่างดูเหมือนจะโอเค
และอีกครั้งที่จะไปมากกว่านี้
ทำไมถึงเป็นเช่นนี้?
ฉันกำลังเรียกใช้ไฟล์ทดสอบของฉัน
แล้วฉันก็จะไปทำการทดสอบ ทำสิ่งที่จะโอเค
จากนั้นฉันทำส่วนที่สองโดยที่พารามิเตอร์ทดสอบเป็นสิ่งที่เราไม่ต้องการจริงๆ ซึ่งเป็นเพียงชิ้นส่วนของสตริง
ผลลัพธ์จะทำให้ค่าผิดพลาดเนื่องจากเราตรวจพบข้อผิดพลาดนี้และขณะนี้เรากำลังส่งคืนข้อผิดพลาด
และสุดท้าย เราก็รันโค้ดชิ้นนี้
เฮ้ จริงเหรอ?
ผลลัพธ์จะเป็นค่าผิดพลาดหรือไม่?
คุณเห็นว่าเรากำลังทำอะไรที่นี่
สิ่งที่เราพยายามทำกับการทดสอบของเราคือการปรับปรุงฟังก์ชันของเราโดยเพียงแค่พยายามทำลายมัน
เราเลยอยากจะทำลายฟังก์ชันของเราแล้วดูว่า เฮ้ ฉันหลอกให้ฟังก์ชันนี้ส่งอากาศให้ฉันได้ไหม
จากนั้นเมื่อคุณทำอย่างนั้นและการทดสอบล้มเหลว คุณก็กลับไปที่ฟังก์ชันและพยายามแก้ไข
เหมือนกับที่เราทำที่นี่ ซึ่งเจ๋งจริงๆ
นี่เป็นวิธีปฏิบัติทั่วไปในการทดสอบที่คุณพยายามทำลายสิ่งต่างๆ จนกว่าฟังก์ชันจะสมบูรณ์แบบ
ตอนนี้ฉันต้องการให้คุณใช้เวลาที่นี่และดูว่าคุณสามารถทำลายฟังก์ชันนี้ได้หรือไม่และอาจเพิ่มการทดสอบอีกสองสามรายการในวิดีโอหน้า
ฉันจะเพิ่มอีกสองสามอย่างเพื่อทำให้ฟังก์ชันนี้ดียิ่งขึ้น
เจอกันใหม่ตอนหน้าค่ะ