Kết quả của unittest
được ghi vào dòng sai số chuẩn, mà bạn có thể ống ở một nơi khác. Trên một hộp * nix này sẽ có thể như thế này:
python -m unittest some_module 2> /dev/null
trên cửa sổ, điều này sẽ giống như thế này (nhờ Karl Knechtel):
python -m unittest some_module 2> NUL
Nếu bạn chạy các bài kiểm tra từ trăn , bạn chỉ có thể thay thế các dòng stderr
như thế:
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
Vì bạn chỉ muốn tắt các bản cập nhật cho các ký hiệu., F, E, bạn cũng có thể tạo lớp TestResult
của riêng mình bằng cách ghi đè lên lớp mặc định. Trong trường hợp của tôi (Python 2.6), giao diện này sẽ trông giống như sau:
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)
Điều này sẽ tắt chức năng mặc định một cách hiệu quả.
Bây giờ chúng ta cũng cần một lớp mới TestRunner
và ghi đè lên _makeResult
phương pháp:
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
Với Á hậu này bây giờ bạn có thể thưởng thức một thử nghiệm miễn phí đăng nhập.
Chỉ cần lưu ý: điều này không thể thực hiện được từ dòng lệnh.
Tại sao bạn muốn thực hiện việc này? Chắc chắn nó là hữu ích để xem sự tiến bộ của các bài kiểm tra? –
Trong trường hợp của tôi, nó thêm nhầm lẫn khi các thử nghiệm của tôi chạy song song, tôi in 1 thông điệp tường trình và các thông điệp nhật ký kiểm tra này được đồng bộ với "E" "F" hoặc "tương ứng". . – swan
Làm cách nào để chạy các thử nghiệm này trong các quy trình riêng biệt, điều này có thể tách luồng đầu ra? –