【问题标题】:Get module of method caller获取方法调用者的模块
【发布时间】:2014-05-19 08:11:46
【问题描述】:

到现在我们都是用这个来获取方法调用者的模块:

frame=inspect.currentframe().f_back
module=inspect.getmodule(frame.f_code)

它运行良好,除了在 py.test TestCases 中。

Py.test 将文件名作为模块名返回。

我们的测试代码布局:

foomodule/lib/examplecode.py
foomodule/tests/test_examplecode.py

如果在examplecode.py 中调用,结果是'foomodule'。但是在test_examplecode.py 中调用它会返回'test_examplecode'

【问题讨论】:

    标签: python introspection pytest


    【解决方案1】:

    py.test 确实适用于被测模块的 AST,因此它可能会更改此值(错误地?)。如果是这样,这可能是一个错误。

    您能否展示一个失败的测试示例?例如。澄清检查代码是作为测试功能运行还是被测代码?

    您能否还指出是否存在任何 __init__.py 文件,因为这可能有助于弄清楚包和模块是什么。

    话虽如此,以这种方式使用堆栈和检查通常是不受欢迎的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-16
      • 2019-10-15
      • 2023-03-17
      • 2015-12-19
      • 2017-04-19
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      相关资源
      最近更新 更多