pytest选项从测试的代码输出打印/记录语句

时间:2019-12-06 15:47:35

标签: python tdd pytest

  • pytest中是否有一个选项,正在测试的代码会将它的logging.info(...)消息输出到控制台
  • 这将使我的测试用例的开发变得更加容易,因为发生了许多数据转换并且我在转换中迷失了方向
  • 一旦我对测试用例感到满意,就可以关闭该选项,以免冗长的日志记录语句消失

  • 我是TDD的新手,想过渡到这种做法,但是由于看不见打印/记录语句,我感到非常不舒服,

    • 我通常创建一个运行代码主要功能的if __name__ == '__main__'
    • 至少可以让我看到日志记录语句,以便我可以在运行时理解代码
    • 但是似乎我在这里重复工作

2 个答案:

答案 0 :(得分:1)

Pytest还具有自己的实现,可以在捕获日志记录时向您显示发生的情况。如果您转到此页面上的实时日志:here,则说明得很好。您需要在其中设置pytest.ini文件:

[pytest]
log_cli = True

这将使您的日志在发出时显示在终端上。然后,您可以将要通过pytest调用看到的级别设置为例如DEBUG:

pytest --log-cli-level DEBUG

或者您也可以在pytest.ini中指定它:

[pytest]
log_cli = True
log_cli_level = DEBUG

其中log_cli_level设置显示哪些日志的级别。这种方法不会使您更改自己的代码,这很好。当然,这当然也要求您首先使用日志记录,但是无论如何这是一个好习惯。

答案 1 :(得分:0)

关于这个主题有一篇很好的文章: https://pythontesting.net/framework/pytest/pytest-logging-real-time/

  • 我将所有打印语句转换为基础代码中的日志记录语句
  • 向包含我的wget函数的模块中添加

`

curl