यहाँ मेरी कोड है:पायथन - मैं unittest के आउटपुट को कैसे रीडायरेक्ट कर सकता हूं? स्पष्ट समाधान काम नहीं करता है
import unittest
import sys
import os
class DemoTest(unittest.TestCase):
def test_one(self):
print "test one"
self.assertTrue(True)
def test_two(self):
print "test two"
self.assertTrue(False)
if __name__ == '__main__':
dirpath = os.path.dirname(os.path.abspath(__file__))
sys.stdout = open(dirpath+'/test_logs/demo_test.stdout.log', 'w')
sys.stderr = open(dirpath+'/test_logs/demo_test.stderr.log', 'w')
test_program = unittest.main(verbosity=0, exit=False)
जब मैं इस चलाने के लिए, demo_test.stdout.log
की सामग्री केवल है:
test one
test two
स्क्रीन पर
मैं अभी भी unittest से उत्पादन देखें:
======================================================================
FAIL: test_two (__main__.DemoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "demotest.py", line 12, in test_two
self.assertTrue(False)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=1)
मैं चाहता हूं कि स्क्रीन पर कोई आउटपुट न हो और सब कुछ लॉग इन हो। (मैं एक क्रॉन नौकरी के रूप में परीक्षण चला रहा हूं, इसलिए किसी भी आउटपुट को stdout या stderr को ईमेल भेजने का कारण बनता है, इसलिए मैं यह निर्दिष्ट करने में सक्षम होना चाहता हूं कि यह कब होता है, जिसका अर्थ है कि मुझे इसमें सबसे अचूक नियंत्रण करने में सक्षम होना चाहिए संबंध)
भी बताए 'sys .__ stdout__' और' sys। __stderr__' यहां विफल रहता है - मुझे लगता है कि आउटपुट को पाइथन के भीतर ही रीडायरेक्ट करना असंभव है। – Eric