获取方法调用者的模块

时间:2014-05-19 08:11:47

标签: python introspection pytest

到目前为止,我们使用它来获取方法调用者的模块:

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'

1 个答案:

答案 0 :(得分:0)

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

你能否举一个测试失败的例子?例如。澄清检查代码是作为测试函数运行还是被测试的代码?

您是否还可以指出是否存在__init__.py个文件,因为这可能有助于明确软件包和模块的内容。

说过以这种方式使用堆栈和检查通常是不受欢迎的。