使用Python断言记录的"规范"方法

gli*_*tak 6 python logging

在以下代码中,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
Run Code Online (Sandbox Code Playgroud)

打印如下:

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
Run Code Online (Sandbox Code Playgroud)

什么是"规范"的方式来使用带时间戳的日志记录格式AssertionError由具有隆起assert(可能无需重写每一个assert代码)?

提出了许多类似的问题,主要涉及asserts单元测试环境......谢谢

Cas*_*mon 5

当您处理记录异常时,您的代码可能会在 a 中出错try except,然后记录异常,例如:

try:
    assert 1 == 0 
except AssertionError as err:
    logger.exception("My assert failed :( ")
    raise err
Run Code Online (Sandbox Code Playgroud)

然后它会记录:

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
Run Code Online (Sandbox Code Playgroud)

  • 这将需要包装所有断言语句。此外,当断言失败时,此代码不会退出,因此它并不完全等效...... (4认同)