ใครสามารถอธิบายการใช้ Python setUp
และtearDown
วิธีการในขณะที่เขียนกรณีทดสอบนอกเหนือจากที่setUp
เรียกว่าทันทีก่อนที่จะเรียกใช้วิธีการทดสอบและtearDown
จะถูกเรียกทันทีหลังจากที่ถูกเรียก
ใครสามารถอธิบายการใช้ Python setUp
และtearDown
วิธีการในขณะที่เขียนกรณีทดสอบนอกเหนือจากที่setUp
เรียกว่าทันทีก่อนที่จะเรียกใช้วิธีการทดสอบและtearDown
จะถูกเรียกทันทีหลังจากที่ถูกเรียก
คำตอบ:
โดยทั่วไปคุณจะเพิ่มขั้นตอนที่จำเป็นต้องมีทั้งหมดในการ setUp และขั้นตอนการล้างข้อมูลทั้งหมดเพื่อฉีกลง
คุณสามารถอ่านเพิ่มเติมกับตัวอย่างที่นี่
เมื่อกำหนดเมธอด setUp () นักวิ่งทดสอบจะเรียกใช้วิธีนั้นก่อนการทดสอบแต่ละครั้ง ในทำนองเดียวกันถ้ามีการกำหนดวิธีการ tearDown () นักวิ่งทดสอบจะเรียกใช้เมธอดนั้นหลังจากการทดสอบแต่ละครั้ง
ตัวอย่างเช่นคุณมีการทดสอบที่ต้องการให้มีรายการอยู่หรือบางสถานะดังนั้นคุณจึงใส่การกระทำเหล่านี้ (การสร้างอินสแตนซ์ออบเจ็กต์การเริ่มต้นฐานข้อมูลการเตรียมกฎและอื่น ๆ ) ลงใน setUp
เช่นเดียวกับที่คุณทราบว่าการทดสอบแต่ละครั้งควรหยุดลงในจุดที่เริ่มต้นนั่นหมายความว่าเราต้องกู้คืนสถานะแอปกลับเป็นสถานะเริ่มต้นเช่นปิดไฟล์การเชื่อมต่อการลบรายการที่สร้างขึ้นใหม่การโทรกลับธุรกรรมและอื่น ๆ ทั้งหมดนี้ ขั้นตอนต่างๆจะรวมอยู่ใน tearDown
ดังนั้นแนวคิดก็คือการทดสอบควรมีเฉพาะการดำเนินการที่จะดำเนินการกับวัตถุทดสอบเพื่อให้ได้ผลลัพธ์ในขณะที่ setUp และ tearDown เป็นวิธีการที่จะช่วยให้คุณปล่อยให้รหัสทดสอบของคุณสะอาดและยืดหยุ่นได้
คุณสามารถสร้าง setUp และ tearDown สำหรับการทดสอบจำนวนมากและกำหนดไว้ในคลาสหลักได้ดังนั้นจึงเป็นเรื่องง่ายสำหรับคุณที่จะสนับสนุนการทดสอบดังกล่าวและอัปเดตการเตรียมการทั่วไปและการทำความสะอาด
หากคุณกำลังมองหาตัวอย่างง่ายๆโปรดใช้ลิงค์ต่อไปนี้พร้อมตัวอย่าง
คุณสามารถใช้สิ่งเหล่านี้เพื่อแยกรหัสทั่วไปออกจากการทดสอบทั้งหมดในชุดทดสอบ
หากคุณมีรหัสซ้ำจำนวนมากในการทดสอบของคุณคุณสามารถทำให้สั้นลงได้โดยการย้ายรหัสนี้ไปที่ setUp / tearDown
คุณอาจใช้สิ่งนี้ในการสร้างข้อมูลทดสอบ (เช่นการตั้งค่าของปลอม / ล้อเลียน) หรือการตัดฟังก์ชันด้วยของปลอม
หากคุณกำลังทำการทดสอบการผสานรวมคุณสามารถใช้การตรวจสอบเงื่อนไขเบื้องต้นด้านสิ่งแวดล้อมในการตั้งค่าและข้ามการทดสอบได้หากมีบางอย่างไม่ได้ตั้งค่าอย่างเหมาะสม
ตัวอย่างเช่น:
class TurretTest(unittest.TestCase):
def setUp(self):
self.turret_factory = TurretFactory()
self.turret = self.turret_factory.CreateTurret()
def test_turret_is_on_by_default(self):
self.assertEquals(True, self.turret.is_on())
def test_turret_turns_can_be_turned_off(self):
self.turret.turn_off()
self.assertEquals(False, self.turret.is_on())
สมมติว่าคุณมีชุดทดสอบ 10 ชุด การทดสอบ 8 รายการใช้รหัสการตั้งค่า / การฉีกขาดเดียวกัน อีก 2 อย่า
การตั้งค่าและการแยกออกเป็นวิธีที่ดีในการปรับโครงสร้างการทดสอบทั้ง 8 ครั้ง ตอนนี้คุณทำอะไรกับการทดสอบอีก 2 รายการ? คุณจะย้ายพวกเขาไปยังห้องทดสอบ / ชุดอื่น ดังนั้นการใช้การตั้งค่าและการฉีกขาดยังช่วยให้สามารถแบ่งการทดสอบออกเป็นกรณี / ชุดได้อย่างเป็นธรรมชาติ