pytest-หมดเวลาเป็นปลั๊กอินสำหรับ py.test ซึ่งจะยุติการทดสอบหลังจากที่หมดเวลาบาง & nbsp;. เมื่อทำเช่นนั้นคุณจะได้รับการถ่ายโอนข้อมูลกองกระทู้ทั้งหมดที่ทำงานในเวลา นี้จะเป็นประโยชน์เมื่อเช่นที่ การทดสอบการทำงานภายใต้การบูรณาการอย่างต่อเนื่อง (CI) เซิร์ฟเวอร์
การใช้งาน
ติดตั้งผ่าน:
PIP ติดตั้ง pytest-หมดเวลา
และจากนั้นเปิดใช้ปลั๊กอินทั้งจากบรรทัดคำสั่ง:
py.test -p หมดเวลา
หรือสะดวกยิ่งขึ้นจากภายในโมดูลการทดสอบหรือ conftest.py:
pytest_plugins = 'หมดเวลา'
คุณสามารถเปลี่ยนหมดเวลาโดยใช้พารามิเตอร์หมดเวลาซึ่งกำหนดหมดเวลาในไม่กี่วินาที
วิธีการทำงาน
ปลั๊กอินนี้จะทำงานในหนึ่งในสองวิธี ถ้าระบบสนับสนุน SIGALRM สัญญาณเตือนภัยจะกำหนดเมื่อการทดสอบเริ่มต้นและยกเลิกเมื่อเสร็จสิ้น หากการเตือนภัยจะหมดอายุในระหว่างการทดสอบการจัดการสัญญาณจะใช้ pytest.fail () เพื่อหยุดยั้งการทดสอบหลังจากที่ได้ทิ้งสแต็คของหัวข้ออื่น ๆ ที่วิ่งไป stderr
หากระบบไม่สนับสนุน SIGALRM หรือตัวเลือกที่ --nosigalrm จากนั้นก็ใช้ด้ายจับเวลาจะถูกนำมาใช้แทน อีกครั้งถ้าจับเวลานี้จะไม่ถูกยกเลิกก่อนที่จะหมดอายุก็จะถ่ายโอนข้อมูลสแต็คของหัวข้อทั้งหมดเพื่อ stderr ก่อนที่จะยุติกระบวนการ py.test ทั้งหมดโดยใช้ os._exit (1)
ข้อเสียของวิธี SIGALRM คือสัญญาณที่ถูกนำมาใช้โดยกรอบการทดสอบ ถ้าสัญญาณนี้จะใช้รหัสภายใต้การทดสอบที่คุณจะต้องใช้ตัวเลือก --nosigalrm ข้อ จำกัด ของด้ายจับเวลา แต่เป็นค่าใช้จ่ายเพิ่มเติมในการสร้างด้ายสำหรับการทดสอบแต่ละดำเนินการและความจริงที่ว่าหลังจากที่หมดเวลาของกระบวนการทั้งหมดจะหยุดและไม่มีการทดสอบจะดำเนินการต่อไป.
คืออะไร ใหม่ ในข่าวประชาสัมพันธ์ฉบับนี้.
- เพิ่มตัวแปรสภาพแวดล้อม PYTEST_TIMEOUT เป็นวิธีการระบุหมดเวลา (ปิดรุ่นที่ 2)
- เครื่องหมายที่มีความยืดหยุ่นมากขึ้นการแยกอาร์กิวเมนต์. ตอนนี้คุณสามารถระบุวิธีการใช้อาร์กิวเมนต์ตำแหน่ง
- ปลั๊กอินถูกเปิดใช้งานในขณะนี้โดยค่าเริ่มต้น นอกจากนี้ไม่จำเป็นต้องระบุ timeout = 0 ในแฟ้มการกำหนดหรือในบรรทัดคำสั่งเพียงเพื่อให้เครื่องหมายจะทำงาน.
มีอะไรใหม่ ในรุ่น 0.2:
- เพิ่มเครื่องหมายการปรับเปลี่ยนความล่าช้าหมดเวลาใช้ @pytest .timeout (N) ไวยากรณ์ขอบคุณ Laurant แบร๊ดสำหรับรหัสเริ่มต้น.
- อนุญาตให้เครื่องหมายหมดเวลาที่จะเลือกวิธีการหมดเวลาโดยใช้วิธีการโต้แย้งคำ.
- เปลี่ยนชื่อตัวเลือก --nosigalrm เพื่อ --method ด้าย = ที่ให้การสนับสนุนการพิสูจน์ในอนาคตสำหรับ eventlet และ gevent ขอบคุณที่รอนนี Pfannschmidt สำหรับคำใบ้.
- เพิ่มหมดเวลาและรายการ timeout_method ไปยังไฟล์การกำหนดค่าเพื่อให้คุณสามารถเปิดใช้งานปลั๊กอินใช้แฟ้มนี้ ขอบคุณที่ Holger Krekel และรอนนี Pfannschmidt สำหรับคำแนะนำ.
- การทดสอบ (และคงที่) สำหรับหลาม 2.6, 2.7 และ 3.2.
ต้องการ
- หลาม
- py.test
ความคิดเห็นที่ไม่พบ