Ini kode saya:
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)
Saat saya menjalankan ini, isi demo_test.stdout.log
hanya:
test one
test two
di layar saya masih melihat output dari 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)
Saya ingin tidak ada keluaran di layar dan semuanya dicatat. (Saya menjalankan pengujian sebagai tugas cron, jadi output apa pun ke stdout atau stderr menyebabkan email terkirim, jadi saya ingin dapat menentukan dengan tepat kapan ini terjadi, yang berarti saya harus dapat mengontrol unittest dalam hal ini pandangan.)
sys.__stdout__
dansys.__stderr__
gagal di sini - saya pikir tidak mungkin untuk mengarahkan output dari dalam python itu sendiri. - person Eric   schedule 10.01.2013