【问题标题】:Package __init__ for a test包 __init__ 进行测试
【发布时间】:2012-06-12 18:32:32
【问题描述】:

我在一个项目中有如下结构:

app/
    __init__.py
    main.py
    tests/
        __init__.py
        test_a.py
        test_b.py

我想为 tests 包下的测试初始化​​日志记录。我将初始化代码放在app/tests/__init__.py 中,假设它在运行任何测试之前运行,但我发现情况并非如此。

如何让这个初始化代码在以下场景中运行?

  • 从命令提示符运行python test_a.py
  • 在 eclipse\aptana\pycharm 下将 test_a.py 作为单元测试运行时
  • 在 eclipse\aptana\pycharm 下运行整个测试套件时

【问题讨论】:

  • 如果我做错了,请告诉我。例如如果我可以简单地拥有一个setup_logging.py 并在每次测试开始时将其导入。我只是想尽量减少样板代码......
  • 如果您直接运行test_a.py,它不会被视为包的一部分,只是作为常规文件。所以,__init__.py 与此无关。只是评论,虽然我不知道您的问题的解决方案......

标签: python unit-testing initialization package


【解决方案1】:

您可以使用记录器配置文件进行正常运行和测试,这是进行不同配置的最安全方式。

“解决方法”是重新创建记录器。您可能刚刚在 __init__.py 中添加了新的记录器?配置后,日志记录会保持其配置,并且只允许扩展。 但是,您可以尝试重新创建整个记录器,如下所述: Python logging before you run logging.basicConfig? 例如:

root = logging.getLogger()
if root.handlers:
    for handler in root.handlers:
        root.removeHandler(handler)
# now create your test config
logging.basicConfig(format='%(asctime)s %(message)s',level=logging.DEBUG)

将此代码添加到您的 test.py 文件中,或将其添加到 __init__.py 但您可能需要:

from tests import *

让它在测试中执行。

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2023-02-06
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多