การแข่งขันเป็นเครื่องมือที่กำหนดสัญญาหลามรัฐนำมาใช้ใหม่ / สนับสนุนตรรกะหลักสำหรับการทดสอบหน่วย & nbsp;. Helper และตรรกะที่เหมาะสมรวมอยู่ที่จะทำให้มันง่ายที่จะเขียนติดตั้งของคุณเองโดยใช้สัญญาการติดตั้ง รหัสกาวมีให้ที่ทำให้การใช้ติดตั้งที่ตรงกับสัญญาการแข่งขันใน UnitTest กรณีทดสอบเข้ากันได้ง่ายและตรงไปตรงมา
ทำไมการแข่งขัน
มาตรฐานหลาม unittest.py ให้ไม่มีวิธีการที่ชัดเจนสำหรับการทำและนำรัฐจำเป็นต้องใช้ในกรณีที่การทดสอบอื่น ๆ กว่าโดยการเพิ่มวิธีการทดสอบในชั้นเรียน เครื่องชั่งนี้ไม่ดี - ฟังก์ชั่นช่วยซับซ้อน propogating ขึ้นลำดับชั้นการทดสอบเป็นรูปแบบปกติเมื่อนี้จะทำ เยาะเย้ยในขณะที่เครื่องมือที่ดีไม่ได้ป้องกันตัวเอง (และผู้ช่วยเหลือจะเยาะเย้ยสิ่งที่ซับซ้อนสามารถสะสมในทางเดียวกันถ้าวางไว้บนชั้นทดสอบ)
โดยกำหนดสัญญาเครื่องแบบที่มีผู้ช่วยเหลือพึ่งพาไม่มีในชั้นเรียนการทดสอบเราจะยอมให้ทุกกิจกรรมสุขอนามัยรหัสปกติจะเกิดขึ้นได้โดยไม่ต้องมีอิทธิพลต่อการบิดเบือนของการอยู่ในลำดับชั้นที่มีการสร้างแบบจำลองสิ่งที่แตกต่างอย่างสิ้นเชิง - ซึ่งเป็นสิ่งที่ผู้ช่วยเหลือใน TestCase ต้องทนทุกข์ทรมานจาก
เกี่ยวกับการแข่งขัน
ตารางการแข่งขันที่เป็นตัวแทนของรัฐบางส่วน ประจำที่แต่ละคนมีคุณลักษณะในนั้นที่มีความเฉพาะเจาะจงในการติดตั้ง ยกตัวอย่างเช่นการติดตั้งที่เป็นตัวแทนของไดเรกทอรีที่สามารถใช้สำหรับแฟ้มชั่วคราวอาจจะมีแอตทริบิวต์ 'เส้นทาง'
การสร้างการแข่งขัน
น้อยที่สุดรองตารางการแข่งขันกำหนดในการเริ่มต้นการตั้งค่าสถานะของคุณและกำหนดเวลาการทำความสะอาดเมื่อ Cleanup เรียกว่าและคุณเสร็จสิ้น:
>>> นำเข้า UnitTest
>>> ติดตั้งนำเข้า
>>> ชั้น NoddyFixture (fixtures.Fixture):
... def ติดตั้ง (ตัวเอง):
... super (NoddyFixture ตนเอง) .setUp ()
... self.frobnozzle = 42
... self.addCleanup (delattr ตนเอง 'frobnozzle')
นี้จะเริ่มต้น frobnozzle เมื่อการติดตั้งที่เรียกว่าและเมื่อการทำความสะอาดที่เรียกว่าได้รับการกำจัดของแอตทริบิวต์ frobnozzle
มีผู้ช่วยสำหรับการปรับตัวทั้งคู่ฟังก์ชั่นหรือการทำงานลงในการแข่งขันคือ มันทำให้ผลของฟังก์ชั่นใน fn_result:
>>> นำเข้า os.path
>>> นำเข้า shutil
>>> นำเข้า tempfile
>>> def setup_function ():
... กลับ tempfile.mkdtemp ()
>>> def teardown_function (ติดตั้ง):
... shutil.rmtree (ติดตั้ง)
>>> การติดตั้ง = fixtures.FunctionFixture (setup_function, teardown_function)
>>> fixture.setUp ()
>>> os.path.isdir พิมพ์ (fixture.fn_result)
จริง
>>> fixture.cleanUp ()
ตารางการแข่งขัน API
ตัวอย่างข้างต้นแนะนำบางส่วนของ API ตารางการแข่งขัน เพื่อที่จะสามารถที่จะทำความสะอาดหลังการติดตั้งมีการใช้การติดตั้งทั้งหมดกำหนดวิธีการทำความสะอาดที่ควรจะเรียกว่าเมื่อการติดตั้งเสร็จสิ้นด้วย
เพราะมีความสุขที่จะสามารถสร้างชุดหนึ่งของการแข่งขันที่เกี่ยวข้องในอนาคตของการใช้พวกเขาติดตั้งยังมีการกำหนดวิธีการตั้งค่าที่ควรจะเรียกว่าก่อนที่จะพยายามที่จะใช้พวกเขา
หนึ่งความปรารถนาร่วมกันที่มีการติดตั้งที่มีราคาแพงในการสร้างคือการนำมาใช้ใหม่ในหลาย ๆ กรณีการทดสอบ; ให้การสนับสนุนนี้ตารางการแข่งขันฐานยังกำหนดตั้งค่าใหม่ที่เรียก self.cleanUp (); self.setUp () การแข่งขันที่มีประสิทธิภาพมากขึ้นสามารถนำมาใช้ใหม่ให้ตัวเองควรแทนที่วิธีนี้ นี้จากนั้นจะสามารถนำมาใช้กับหลายรัฐผ่านการทดสอบสิ่งที่ต้องการ testresources, setUpClass หรือ setUpModule
เมื่อใช้ติดตั้งกับการทดสอบด้วยตนเองคุณสามารถเรียกใช้การติดตั้งและวิธีการทำความสะอาด สิ่งอำนวยความสะดวกอื่น ๆ แต่คือการใช้กาวรวมจาก fixtures.TestWithFixtures ซึ่งมีการกำหนด mixin useFixture (กรณีอูฐเพราะ UnitTest เป็นกรณีอูฐตลอด) วิธีการ มันจะเรียกการตั้งค่าในการติดตั้งโทร self.addCleanup (ติดตั้ง) เพื่อกำหนดตารางการทำความสะอาดและกลับการติดตั้ง นี้จะช่วยให้หนึ่งเขียน:
>>> นำเข้า testtools
>>> นำเข้า UnitTest
โปรดทราบว่าเราจะใช้ testtools TestCase ที่นี่ในฐานะที่เราจำเป็นต้องรับประกันวิธี TestCase.addCleanup
& nbsp; >>> ชั้น NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& nbsp; ... def test_example (ตัวเอง):
& nbsp; ... การติดตั้ง = self.useFixture (NoddyFixture ())
& nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& nbsp; >>> ผล = unittest.TestResult ()
& nbsp;. >>> _ = NoddyTest ('test_example') ทำงาน (ผล)
& nbsp; >>> พิมพ์ result.wasSuccessful ()
& nbsp; ที่แท้จริง
การแข่งขันใช้โปรโตคอลบริบทเพื่อให้คุณยังสามารถใช้การติดตั้งเป็นผู้จัดการบริบท:
>>> กับ fixtures.FunctionFixture (setup_function, teardown_function) ในขณะที่การติดตั้ง:
... os.path.isdir พิมพ์ (fixture.fn_result)
True
ต้องการ
- หลาม
ความคิดเห็นที่ไม่พบ