tl.testing ให้สาธารณูปโภคต่าง ๆ ที่สามารถนำมาใช้เมื่อเขียนทดสอบ & nbsp;. มันเข้ากันได้กับรุ่น Python 2.6 และ 2.7
Sandboxes ของไดเรกทอรีและไฟล์
เมื่อทดสอบรหัสที่ปรับเปลี่ยนไดเรกทอรีและไฟล์จะเป็นประโยชน์ที่จะสามารถสร้างและตรวจสอบต้นไม้ตัวอย่างของไดเรกทอรีและไฟล์ได้อย่างง่ายดาย โมดูล tl.testing.fs ให้การสนับสนุนสำหรับการสร้างต้นไม้จากข้อความคำอธิบายรายการในรูปแบบเดียวกันและทำความสะอาดขึ้นหลังจากที่ตัวเอง
ในการทดสอบ DOC, สิ่งอำนวยความสะดวกเหล่านี้อาจนำมาใช้เช่นนี้ในการสร้างและรายการไดเรกทอรีไฟล์และเชื่อมโยงสัญลักษณ์:
>>> จาก new_sandbox นำเข้า tl.testing.fs, LS
>>> new_sandbox ("" "
... ง foo
... ฉ foo / บาร์ asdf
... ลิตร baz -> foo / บาร์
... "" ")
>>> LS ()
ลิตร baz -> foo / บาร์
ง foo
ฉ foo / บาร์ asdf
ดูไฟล์ fs.txt พบกับรหัสที่มาสำหรับคำแนะนำต่อไปรวมทั้งวิธีการตั้งค่าและการฉีกขาดลงทดสอบโดยใช้เรียงรายระบบไฟล์
การติดตั้งสคริปต์ callable
ฟังก์ชั่นบางคนอาจต้องการที่จะทดสอบทำให้การใช้งานของโปรแกรมภายนอกเช่นเพจเจอร์หรือแก้ไขข้อความ โมดูล tl.testing.script มีสาธารณูปโภคที่ติดตั้งสคริปต์จำลองง่ายในสถานที่ที่รหัสเพื่อได้รับการทดสอบจะพบพวกเขา พวกเขาใช้เวลาสตริงของรหัสหลามและสร้างสคริปต์เสื้อคลุมที่กำหนดเส้นทางหลามให้ตรงกับการทดสอบและการเรียกใช้รหัส
นี่คือวิธีการดังกล่าวสคริปต์จำลองอาจจะมีการใช้ในการทดสอบเอกสาร:
>>> จากการนำเข้า tl.testing.script ติดตั้ง
>>> script_path = ติดตั้ง ("พิมพ์ 'สคริปต์ง่าย.")
>>> การพิมพ์เปิด (script_path) อ่าน ()
#! ...
นำเข้า SYS
sys.path [] = [... ]
พิมพ์ 'สคริปต์ง่าย.'
>>> นำเข้ากระบวนการย่อย
>>> ย่อย = subprocess.Popen (script_path เปลือก = True, stdout = subprocess.PIPE)
>>> stdout, stderr = sub.communicate ()
>>> stdout พิมพ์
สคริปต์ง่าย
ดูไฟล์ script.txt พบกับรหัสที่มาสำหรับความเป็นไปได้ต่อไปวิธีการติดตั้งและการเข้าถึงสคริปต์จำลองรวมทั้งวิธีการที่จะฉีกลงทดสอบการใช้สคริปต์เยาะเย้ย
หมอทดสอบเนื้อหากราฟิกของพื้นผิวไคโร
ขณะที่มันเป็นตรงไปข้างหน้าเพื่อเปรียบเทียบเนื้อหาของสองพื้นผิวไคโรในรหัสหลาม, การจัดการกราฟิกอยู่นอกเหนือการทดสอบเอกสาร แต่มานูเอลแพคเกจสามารถใช้ในการดึงกรณีทดสอบทั่วไปเพิ่มเติมจากเอกสารข้อความในขณะที่อนุญาตให้นำมาผสมกับการทดสอบเอกสารในทางธรรมชาติ
โมดูล tl.testing.cairo ให้โรงงานชุดทดสอบที่ใช้มานูเอลที่จะดำเนินการทดสอบกราฟิกสูตรเป็นตัวเลขข้อความที่ปรับโครงสร้างหนี้ คำอธิบายของตัวเลขดังกล่าวควรจะแสดงออกหลามตัวอักษรที่มีค่าเป็นพื้นผิวไคโรและภาพของมันจะถูกนำมาใช้เป็นความคาดหวังของการทดสอบ
นี่คือวิธีที่พื้นผิวอาจจะนำมาเปรียบเทียบกับภาพที่คาดว่าในการทดสอบเอกสาร:
>>> นำเข้าไคโร
>>> จาก pkg_resources นำเข้า resource_filename
>>> ภาพ = resource_filename ('tl.testing', 'testimages / correct.png')
.. รูป :: TL / ทดสอบ / testimages / correct.png
& nbsp; `` cairo.ImageSurface.create_from_png (ภาพ) ``
ดูไฟล์ cairo.txt พบกับรหัสที่มาสำหรับคำแนะนำเพิ่มเติมและเอกสารของการส่งออกการทดสอบที่เป็นไปได้
การทำงานกับหัวข้อในรหัสการทดสอบ
คลาส TestCase มาตรฐานไม่ได้เก็บรวบรวมข้อผิดพลาดและความล้มเหลวที่เกิดขึ้นในหัวข้ออื่น ๆ กว่าหนึ่งหลัก โมดูล tl.testing.thread ให้เรียนด้ายและชั้น ThreadAwareTestCase เพื่อให้แค่นั้นเช่นเดียวกับบางสิ่งอำนวยความสะดวกอื่น ๆ สำหรับการทดสอบที่เกี่ยวข้องกับหัวข้อ: การป้องกันไม่ให้มีข้อยกเว้นที่ไม่สามารถจัดการคาดว่าในหัวข้อจากการถูกพิมพ์ด้วยการแสดงผลการทดสอบหัวข้อรายงานทิ้งไว้ข้างหลัง โดยการทดสอบใช้รหัสในหัวข้อภูตร่วมกระทู้และนับกระทู้ที่เริ่มตั้งระหว่างเวลาที่ใช้ทดสอบ:
>>> เวลานำเข้า
>>> นำเข้า tl.testing.thread
>>> ชั้น SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... def test_error_in_thread_should_be_reported (ตัวเอง):
... กับ tl.testing.thread.ThreadJoiner (1):
... self.run_in_thread (แลมบ์ดา: 1/0)
...
... def test_active_count_should_count_only_new_threads (ตัวเอง):
... กับ tl.testing.thread.ThreadJoiner (1):
... self.run_in_thread (แลมบ์ดา: time.sleep (0.1))
... self.assertEqual (1, self.active_count ())
... self.assertEqual (0, self.active_count ())
>>> นำเข้า UnitTest
>>> วิ่ง (unittest.makeSuite (SampleTest))
================================================== ====================
ข้อผิดพลาด: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (โทรล่าสุดที่ผ่านมา):
& nbsp; ...
ZeroDivisionError: แบ่งจำนวนเต็มหรือโมดูโลด้วยศูนย์
-------------------------------------------------- --------------------
2 วิ่งทดสอบใน N.NNNs
ล้มเหลว (ข้อผิดพลาด = 1)
ดูไฟล์ thread.txt พบกับรหัสที่มาสำหรับรายละเอียดเพิ่มเติมของการเรียน ThreadAwareTestCase
การสร้างห้องทดสอบที่ใช้มานูเอล
ขณะที่มานูเอลมีคุณสมบัติที่มีประสิทธิภาพบางอย่างในนอกจาก doctests มาตรฐาน, มานูเอลห้องทดสอบมีการตั้งค่าแตกต่างกันเล็กน้อยจากคนมาตรฐาน โมดูล tl.testing.doctest ดำเนินการโรงงาน DocFileSuite ที่สามารถนำมาใช้เช่นมาตรฐานเดียว แต่จะสร้างชุดทดสอบที่ใช้มานูเอลและช่วยให้การกำหนดค่าเพิ่มเติมบางอย่างที่เกี่ยวข้องกับมานูเอลในหมู่พวกเขามีความสามารถที่จะตีความเชิงอรรถที่เคยทำได้โดยใช้เลิก zope.testing.doctest:
>>> sample_txt = เขียน ('sample.txt', "" "
... [#footnote] _
... >>> x
... 1
...
... .. [#footnote]
... >>> x = 1
... "" ")
>>> จากการนำเข้า tl.testing.doctest DocFileSuite
>>> วิ่ง (DocFileSuite (sample_txt เชิงอรรถ = True))
-------------------------------------------------- --------------------
วิ่ง 1 การทดสอบใน N.NNNs
ตกลง
>>> sample_txt = เขียน ('sample.txt', "" "
... .. รหัสบล็อก :: หลาม
... x = 1
...
... >>> x
... 1
... "" ")
>>> นำเข้า manuel.codeblock
>>> วิ่ง (DocFileSuite (sample_txt, มานูเอล = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
วิ่ง 1 การทดสอบใน N.NNNs
ตกลง
ต้องการ
- หลาม
ความคิดเห็นที่ไม่พบ