मुद्रण परीक्षण निष्पादन समय और py.test के साथ धीमे परीक्षणों को पिन करना


118

मैं p..test का उपयोग करके CI सर्वर पर यूनिट परीक्षण चला रहा हूं। टेस्ट नेटवर्क पर प्राप्त बाहरी संसाधनों का उपयोग करते हैं। कभी-कभी टेस्ट रनर बहुत लंबा हो जाता है, जिससे टेस्ट रनर का गर्भपात हो जाता है। मैं स्थानीय स्तर पर मुद्दों को दोहरा नहीं सकता।

वहाँ (धीमी) परीक्षण के निष्पादन समय py.test प्रिंट आउट बनाने का एक तरीका है, इसलिए समस्याग्रस्त परीक्षणों को कम करना आसान हो गया है?

जवाबों:


172

मुझे यकीन नहीं है कि यह आपकी समस्या को हल कर देगा, लेकिन आप परीक्षण सूट खत्म होने के बाद --durations=Nसबसे धीमे Nपरीक्षणों को प्रिंट करने के लिए पास कर सकते हैं ।

--durations=0सभी को प्रिंट करने के लिए उपयोग करें ।


88
यदि आप --durations=0सभी परीक्षणों के लिए निष्पादन समय पास करते हैं, तो रिपोर्ट की जाएगी।
oLas

क्या आप जानते हैं कि उत्पन्न HTML कवरेज रिपोर्ट में इसे जोड़ने की संभावना है? .coveragercसामग्री के साथ फ़ाइल जोड़ने की तरह ही [run] branch = Trueब्रांचिंग कवरेज जानकारी को जोड़ता है?
मार्टिन थोमा

आपको स्वयं उस जानकारी को जोड़ना होगा, pytest-html को अतिरिक्त सामग्री सम्मिलित करने के लिए समर्थन है।
ब्रूनो ओलिवेरा

4
@ लोला: यह सच नहीं है: यदि परीक्षण "बहुत तेज" हैं, तो मापा समय स्पष्ट रूप से 0 हो सकता है और वे अभी भी फ़िल्टर किए जाएंगे। एक नकारात्मक सीमा भी इस मामले में मदद नहीं करती है। इस दृष्टिकोण के साथ एक और झुंझलाहट यह है कि पाइस्टेस्ट हमेशा प्रिंट करेगा (0.00 durations hidden. Use -vv to show these durations.)जिसका कोई मतलब नहीं है।
ब्लूनेट 10

17

आप के साथ संख्या पारित कर सकते हैं --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- अवधि

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.