簡體   English   中英

使用Python斷言記錄的“規范”方法

[英]“canonical” way to use logging for Python asserts

在下面的代碼中, assert在單元測試之外使用:

import logging

if __name__ == "__main__":
    logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
    logger = logging.getLogger(__name__)
    logger.info("info level")
    assert 1 == 0

打印如下:

2016-02-16 14:56:58,445 - __main__ - INFO - info level
Traceback (most recent call last):
   File "logtest.py", line 7, in <module>
    assert 1 == 0
AssertionError

什么是“規范”的方式來使用帶時間戳的日志記錄格式AssertionError由隆起assert (可能無需重寫每個assert在代碼中)?

提出了許多類似的問題,主要處理單元測試環境中的asserts ......謝謝

當您處理記錄異常時,您可以在try except中使用可能出錯的代碼,然后記錄異常,例如:

try:
    assert 1 == 0 
except AssertionError as err:
    logger.exception("My assert failed :( ")
    raise err

然后它會記錄:

2016-02-16 15:29:43,009 - __main__ - INFO - info level
2016-02-16 15:29:43,009 - __main__ - ERROR - My assert failed :( 
Traceback (most recent call last):
  File "/home/james/PycharmProjects/scratchyard/test_time.py", line 8, in <module>
    assert 1 == 0
AssertionError

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM