我想使用python日誌記錄模塊記錄unittest的所有輸出,以便我可以將它合併到我正在編寫的測試框架中。這樣做的目標是使用兩組輸出來運行測試,一組輸出告訴測試用例步驟和更多的調試級別輸出,以便在事情出錯時我們儘可能多地提供信息。輸出將被放置到兩個文件中,一個可以發送給人們,另一個可以保存以防發生故障。我注意到TextTestRunner可以使用流,這可以用於日誌記錄模塊嗎?我正在計劃使用Python 2.7中的一些新功能。如何使用unittest模塊在python中使用日誌模塊?
8
A
回答
1
你可以,但我不確定這是你最好的方法。
對於這種方法,您可以:
實例化可以通過
TextTestRunner
使用的內存流。這是io.StringIO
幾乎完美的東西,除了它僅適用於Unicode輸入,並且我不確定TextTestRunner是否將Unicode正確寫入流。你的另一種選擇是編寫你自己的內存流來滿足你的目的,也許用編碼器包裝StringIO
。創建您自己的TextTestRunner並使用此內存流進行初始化。
創建一個從流中讀取並將其寫入日誌的類。
這可能是簡單的:
class StreamLogger(object):
def __init__(self, input_stream, output_logger):
self.input_stream = input_stream
self.output_logger
def run(self):
while True:
line = input_stream.readline()
if not line:
break
output_logger.error(line)
問題這種方法:
- 你沒有太多的如果在指導TextTestRunner輸出的不同部分,以不同的任何靈活性日誌級別。
- TextTestRunner,如果配置錯誤,會寫一堆你可能不想要的東西。默認的詳細程度爲1,這將在測試時寫入進度點......這可能只會在日誌記錄輸出中獲得。
- 如果你這樣天真地做到這一點,只有在你將所有輸出寫入流之後,纔會調用
stream_logger.run()
。因此,您不會實時獲得您的日誌輸出,並且您的日誌記錄時間戳將毫無用處。例如,你可以通過產生一個單獨的線程來解決這個問題,例如,你需要選擇/滾動一個可以同時處理一個讀寫器線程的流,或者分叉一個進程並且丟棄內存中的流,或者相對複雜的東西。
的做法我反而建議是:放棄流和簡單的滾你自己的測試啓動 - 所謂的,也就是說,LoggingTestRunner - 在正是你想要的方式輸出寫入測試輸出到記錄器。這可以讓你避免所有這三個問題。
相關問題
- 1. 如何在unittest中模擬python模塊
- 2. 如何使用python日誌模塊打印多行日誌?
- 3. 模塊unittest Kohana錯誤,如何使用?
- 4. 如何在多個模塊中使用python日誌記錄
- 5. 如何在python中使用unittest與多文件模塊
- 6. 如何在failfast模式下使用Python unittest模塊中的TextTestRunner類?
- 7. 在python中使用模塊
- 8. 在Python中使用日誌記錄模塊的奇怪問題
- 9. 如何在python中使用pyfig模塊?
- 10. 如何在python中使用gfx模塊
- 11. 如何在Python中使用win32gui模塊?
- 12. 使用python模塊
- 13. 使用日誌記錄模塊在python中重命名日誌文件
- 14. 如何一起使用Python 2模塊和Python 3模塊?
- 15. c擴展中的python日誌記錄模塊的使用
- 16. 使用JSON模塊在Python
- 17. 日誌包 - 在主模塊和模塊之間共享日誌文件 - python 3
- 18. 使用多個模塊的python日誌記錄不起作用
- 19. 如何使用Python中的Perl模塊?
- 20. 在NodeJS模塊中使用模塊
- 21. 如何使用log.io日誌模塊中的Node.js
- 22. 如何在python中使用不同時間戳記的日誌模塊?
- 23. 如何使日誌模塊功能使用不同的日誌記錄器?
- 24. 日誌模塊中的virtualenv
- 25. TimedRotatingFileHandler在日誌模塊
- 26. 如何在後續的模塊調用中使用已導入的模塊Python
- 27. 如何使用Python的日誌模塊將日誌文件中的上一行寫入日誌文件?
- 28. 重複使用python模塊上的日誌記錄配置
- 29. 使用python的unittest模塊的未綁定錯誤
- 30. 如何使用日期時間模塊
謝謝。這聽起來像我需要做的事情,我需要做的其他事情。 – user197674 2010-07-27 21:27:42