我有以下内容:
ModuleFolder
|
|-->. ModuleFile.py .
|
'-->. TestsFolder .
|
'---> UnitTest1.py
Run Code Online (Sandbox Code Playgroud)
我正在尝试从父目录导入.在这种情况下,我试图从测试文件夹运行"UnitTest1.py",并从它上面的目录(文件"ModuleFile.py")导入.
from .. import *但我特意尝试这样做,import MyModuleName因此我可以在单元测试中更明确,并避免名称的错误/冲突.我在做什么(它对我有用)如下:
sys.path.append("../")
Run Code Online (Sandbox Code Playgroud)
然后从父目录导入我需要的内容.
sys.path?因为它是相对的.如果我从/ home/workspace/MyModule/unittests /运行并且我的模块在/ home/workspace/MyModule /下我假设如果同事运行这个,那么添加/ home/workspace/MyModule /到路径不一定是真的在他自己的/ home/documents/MyModule目录下的机器上.我的问题:
这是Python适当的吗?如果没有,这有什么问题.有没有更好的办法?或者这是一个真正的RTFM时刻,答案是我已经看过的7个以上SO问题之一?(我看到那些都推荐显式路径而不是我采用的相对路径方法).
其他有用的信息:
Eev*_*vee 27
不要从tests文件夹运行测试.从项目的根目录运行它,该目录是模块文件夹.您应该很少需要使用其中任何一个, sys.path或者PYTHONPATH当您这样做时,您要么在其他库中造成错误,要么让用户的生活更加艰难.
python -m TestsFolder.UnitTest1
Run Code Online (Sandbox Code Playgroud)
如果您使用像py.test这样的测试运行器,您可以py.test从结帐的根目录运行,它会为您找到测试.(假设你将测试test_unit1.py命名为更类似的东西.你当前的命名方案有点不正统.;))
最好在这样的情况下插入你的相对路径sys.path:
import sys
sys.path.insert(0, '../')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32902 次 |
| 最近记录: |