พิมพ์เวลาดำเนินการทดสอบและตรึงการทดสอบแบบช้าด้วย py.test


122

ฉันกำลังเรียกใช้การทดสอบหน่วยบนเซิร์ฟเวอร์ CI โดยใช้ py.test การทดสอบใช้ทรัพยากรภายนอกที่ดึงผ่านเครือข่าย บางครั้งนักวิ่งทดสอบใช้เวลานานเกินไปทำให้นักวิ่งทดสอบถูกยกเลิก ฉันไม่สามารถทำซ้ำปัญหาในเครื่องได้

มีวิธีทำให้ py.test พิมพ์เวลาดำเนินการของการทดสอบ (ช้า) หรือไม่ดังนั้นการตรึงการทดสอบที่มีปัญหาจึงง่ายขึ้นหรือไม่?

คำตอบ:


175

ฉันไม่แน่ใจว่านี่จะช่วยแก้ปัญหาของคุณได้ แต่คุณสามารถ--durations=Nพิมพ์แบบNทดสอบที่ช้าที่สุดได้หลังจากที่ชุดทดสอบเสร็จสิ้น

ใช้--durations=0พิมพ์ทั้งหมด


89
หากคุณผ่าน--durations=0เวลาดำเนินการสำหรับการทดสอบทั้งหมดจะถูกรายงาน
oLas

คุณทราบหรือไม่ว่ามีความเป็นไปได้ที่จะเพิ่มลงในรายงานความครอบคลุม HTML ที่สร้างขึ้น คล้ายกับการเพิ่ม.coveragercไฟล์ที่มีเนื้อหา[run] branch = Trueเพิ่มข้อมูลการแยกสาขา?
Martin Thoma

คุณจะต้องเพิ่มข้อมูลนั้นด้วยตัวเอง pytest-html รองรับการแทรกเนื้อหาเพิ่มเติม
Bruno Oliveira

4
@oLas: ไม่เป็นความจริง: หากการทดสอบ "เร็วเกินไป" เวลาที่วัดได้จะกลายเป็น 0 และจะยังคงถูกกรองออกไป เกณฑ์ค่าลบยังไม่ช่วยในกรณีนี้ สิ่งที่น่ารำคาญอีกประการหนึ่งของวิธีนี้คือ pytest มักจะพิมพ์(0.00 durations hidden. Use -vv to show these durations.)ซึ่งไม่สมเหตุสมผล
bluenote10

19

คุณสามารถส่งหมายเลขด้วย --durations

pytest --durations=0 — Show all times for tests and setup and teardown

pytest --durations=1 — Just show me the slowest

pytest --durations=50 — Slowest 50, with times,  etc

ดูใน: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

หรือ: https://docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.