我确信这很容易解决,但我已经盯着它看了很长时间,以至于我正盯着解决方案。任何提示/提示/建议/解决方案都赞赏!
我正在尝试将一些单元测试添加到我的应用引擎应用中。我正在使用http://code.google.com/appengine/docs/python/tools/localunittesting.html(页面底部)中的testrunner.py示例。如果我将unittest文件(名为'test_lib.py')放在应用程序的根目录(myapp)中,这可以正常工作,但是我想将测试移动到应用程序中的单独子目录(名为'tests')。现在我需要从应用程序导入一些模块,但是由于unittest文件的工作目录现在更深一层,因此它不会从我的应用程序引擎应用程序中看到实际的模块。
我尝试在测试中添加__ init__.py并将以下代码添加到其中:
import os
import sys
sys.path.append(os.path.dirname(os.getcwd()))
我希望这会找到当前工作目录并向上升级并将其添加到sys.path中,然后我就可以在unittest文件中导入'util.lib'('test_lib.py') 。但是,当我运行testrunner.py时,我仍然收到错误“ImportError:没有名为util.lib的模块” - >我在这里尝试在根'myapp'中的一个名为util的子目录中导入一个名为lib的模块。我的目录结构如下:
testrunner.py
|- myapp
|- __init__.py
|- util
|- __init__.py
|- lib.py
|- tests
|- __init__.py ## this file has the import mentioned above.
|- test_lib.py
我还尝试将应用程序根目录的导入添加到testrunner,但这会返回相同的错误。
def main(sdk_path, test_path):
sys.path.append(os.path.dirname(test_path)) ## This line I added to the testrunner.
sys.path.insert(0, sdk_path)
import dev_appserver
dev_appserver.fix_sys_path()
suite = unittest2.loader.TestLoader().discover(test_path)
unittest2.TextTestRunner(verbosity=2).run(suite)
我用以下命令调用测试:
./testrunner.py ~/sdk/google_appengine/ myapp/tests/
我在这里缺少什么建议?
答案 0 :(得分:2)
您是否尝试使用绝对路径?
sys.path.append(os.path.abspath(os.path.dirname(test_path)))