unittest
के उत्पादन में मानक त्रुटि धारा, करने के लिए लिखा है जो आप कहीं और पाइप कर सकते हैं। एक * nix बॉक्स पर यह इस तरह संभव हो जाएगा:
python -m unittest some_module 2> NUL
आप अजगर से परीक्षण चलाते हैं:
python -m unittest some_module 2> /dev/null
खिड़कियों पर, यह इस (धन्यवाद कार्ल Knechtel) की तरह दिखना चाहिए
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
01:, तो आप बस
stderr
धारा उस तरह की जगह ले सकता
चूंकि आप केवल।, एफ, ई प्रतीकों के लिए अद्यतन बंद करना चाहते हैं, तो आप डिफ़ॉल्ट रूप से ओवरराइड करके अपना खुद का TestResult
कक्षा भी बना सकते हैं। मेरे मामले (अजगर 2.6) में यह इस तरह दिखेगा:
import unittest
class MyTestResult(unittest._TextTestResult):
def addSuccess(self, test):
TestResult.addSuccess(self, test)
def addError(self, test, err):
TestResult.addError(self, test, err)
def addFailure(self, test, err):
TestResult.addFailure(self, test, err)
यह प्रभावी रूप से पात्रों में से मुद्रण बंद हो जाती है, लेकिन डिफ़ॉल्ट कार्यक्षमता को बनाए रखने।
अब हम भी एक नया TestRunner
वर्ग की जरूरत है और _makeResult
विधि ओवरराइड:
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
इस धावक अब आप एक लॉग मुफ्त परीक्षण का आनंद ले सकते हैं।
बस एक नोट: दुर्भाग्यवश, कमांड लाइन से यह संभव नहीं है।
आप ऐसा क्यों करना चाहते हैं? निश्चित रूप से परीक्षण की प्रगति को देखना उपयोगी है? –
मेरे मामले में यह भ्रम जोड़ता है क्योंकि मेरे परीक्षण समानांतर में चलते हैं, मैं 1 लॉग संदेश प्रिंट करता हूं और इन परीक्षण लॉग संदेशों को संबंधित "ई" "एफ" या "।" के साथ सिंक्रनाइज़ नहीं किया जाता है। । – swan
अलग-अलग प्रक्रियाओं में इन परीक्षणों को चलाने के बारे में, जो आउटपुट स्ट्रीम को अलग करेगा? –