Tôi có mẫu này mã (test_it.py
):Huỷ stdout/stderr của chương trình theo kiểm tra, nhưng giữ unittest đầu ra
import sys
def give_me_5():
print >>sys.stdout, "STDOUT"
print >>sys.stderr, "STDERR"
return 6
import unittest
class TestMe(unittest.TestCase):
def setUp(self):
pass
def test_give_me_5(self):
self.assertEqual(give_me_5(), 5)
if __name__ == '__main__':
unittest.main()
nào mang lại cho tôi kết quả như sau:
» python -m unittest test_it
A long annoying output message
A long annoying error message
F
======================================================================
FAIL: test_give_me_5 (__main__.TestMe)
----------------------------------------------------------------------
Traceback (most recent call last):
File "xx.py", line 17, in test_give_me_5
self.assertEqual(give_me_5(), 5)
AssertionError: 6 != 5
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
Nhưng vì sự tin nhắn dài, gây phiền nhiễu được sản xuất bởi chương trình đang được kiểm tra (chương trình thực sự tạo ra LOTS của đầu ra), tôi không thể nhìn thấy đầu ra từ unittest. Tôi muốn loại bỏ stdout/stderr của hàm đang được kiểm tra (give_me_5
), nhưng tôi vẫn muốn xem stdout/stderr của unittest
. Tôi muốn để có được kết quả này:
» python -m unittest test_it
F
======================================================================
FAIL: test_give_me_5 (__main__.TestMe)
----------------------------------------------------------------------
Traceback (most recent call last):
File "xx.py", line 17, in test_give_me_5
self.assertEqual(give_me_5(), 5)
AssertionError: 6 != 5
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
Vì vậy mà sản lượng sản xuất bởi các chương trình được kiểm tra (cả stdout và stderr) được lọc ra bởi unittest, nhưng sản lượng sản xuất bởi unittest bản thân được giữ. Tôi không muốn sửa đổi mã đang được thử nghiệm (không có chuyển hướng trong chính mã). Tôi chỉ muốn nói với unittest rằng tất cả các đầu ra để stdout/stderr được tạo ra bởi các mã được kiểm tra nên được loại bỏ.
Điều này có khả thi không?
bản sao có thể có của [python - làm cách nào để chuyển hướng đầu ra của unittest? Giải pháp rõ ràng không hoạt động] (http://stackoverflow.com/questions/14246119/python-how-can-i-redirect-the-output-of-unittest-obvious-solution-doesnt-wor) –
@DougR. Đó là câu hỏi khác là về vấn đề ngược lại: anh chàng đã nhận được đầu ra của chương trình và đầu ra của unittest tách ra, đó là chính xác những gì tôi muốn đạt được. – dangonfast