2014-05-13 12 views
9

मैं अपने नोसेटेट वातावरण को स्थापित कर रहा हूं लेकिन ठीक से काम करने के लिए टाइमआउट नहीं मिल रहा है। मैं नाक द्वारा खोजे गए प्रत्येक परीक्षण पर x सेकेंड (2 कहें) टाइमआउट करना चाहता हूं।नोसेटेट्स के साथ परीक्षणों पर टाइमआउट

मैंने कोशिश की है:

nosetests --processes=-1 --process-timeout=2 

यह सिर्फ ठीक काम करता है, लेकिन मैं निम्नलिखित देखा:

  • समानांतर परीक्षण के लिए कुछ सरल testcases
  • नाक वापस जब रिपोर्ट नहीं करता के लिए समय लेता है एक परीक्षण का समय समाप्त हो गया है (और इस प्रकार असफल रहा)

क्या कोई जानता है मैं काम करने के लिए इस तरह के एक टाइमआउट कैसे प्राप्त कर सकते हैं? मैं इसे समानांतर परीक्षण के बिना काम करना पसंद करूंगा लेकिन यह तब तक कोई मुद्दा नहीं होगा जब तक कि मुझे फीडबैक प्राप्त न हो कि एक परीक्षण का समय समाप्त हो गया है।

उत्तर

9

मैं अगर यह आपके जीवन को आसान कर देगा पता नहीं है, लेकिन वहाँ nose.tools में एक इसी तरह की सुविधा है कि समय समाप्ति पर विफल हो जाएगा, और आप इसके लिए समानांतर परीक्षण है की जरूरत नहीं है:

from nose.tools import timed 

@timed(2) 
def test_a(): 
    sleep(3) 

आप यदि मैन्युअल रूप से कोई विशेषता जोड़ना एक मुद्दा है, तो संभवतः एक स्क्रिप्ट/प्लगइन का उपयोग करके मॉड्यूल में अपने सभी परीक्षणों को स्वचालित रूप से सजा सकते हैं, लेकिन मैं व्यक्तिगत रूप से जादू पर स्पष्टता पसंद करता हूं।

Lib/site-packages/nose/plugins/multiprocess.py स्रोत को देखकर यह process-timeout विकल्प जैसा लगता है कि आप "लटकते" उपप्रोसेसेस प्रबंधित करने के लिए कुछ विशिष्ट हैं जो परीक्षण को पूरा होने से रोक सकते हैं।

+2

अपेक्षित काम करता है, धन्यवाद! हालांकि मैं सभी परीक्षणों के लिए टाइमआउट सेट करने के लिए कमांड लाइन विकल्प पसंद करूंगा, लेकिन मैं इस दृष्टिकोण के साथ जारी रखूंगा। यह वास्तव में मुझे विशिष्ट कार्यों के लिए टाइमआउट सेट करने की अनुमति देगा जो – JustMe

+3

से अधिक समय लेते हैं, मैंने कोशिश की और नाखुश था। यहां मैंने अपने कोड में जो कुछ रखा है: आयात nose.tools.timed # चेतावनी, यह विज्ञापन के रूप में नहीं करता है, उपयोग न करें, यह पंक्ति चेतावनी के रूप में छोड़ी गई है # nose.tools.timed समय को सीमित नहीं करता है एक परीक्षण चलाने के लिए है, यह परीक्षण चलाता है, और यदि यह बहुत लंबा # लेता है तो यह टाइमएक्सिड() बढ़ाता है, यह न तो रन टाइम पर बाध्य प्रदान करता है, न ही # रनिंग समय का विस्तार करने का एक तरीका परीक्षण जो नाक-व्यापी प्रति-परीक्षण सीमा से अधिक समय लेता है। किसी ने कभी इसका इस्तेमाल क्यों किया? – Jim

संबंधित मुद्दे