Python unittest扩展模块相对导入'正确'处理

时间:2015-11-30 14:43:27

标签: python unit-testing pypi egg

给定模块设置如下:

myproject
├── MANIFEST.in
├── README.md
├── build
├── dist
├── examples
│   ├── __init__.py
│   ├── mypackage-example.py
│   ├── mypackage-simple-v1.py
│   ├── mypackage-simple-v2-report.py
│   └── mypackage-simple-v2.py
├── mypackage
│   ├── PKG-INFO
│   ├── __init__.py
│   ├── api_methods.py
│   ├── config.py
│   ├── connector.py
│   ├── contrib.py
│   ├── examples
│   │   ├── __init__.py
│   │   ├── mypackage-example.py
│   │   ├── mypackage-simple-v1.py
│   │   ├── mypackage-simple-v2-report.py
│   │   └── mypackage-simple-v2.py
│   ├── qcache
│   │   ├── __init__.py
│   │   └── redis.conf
│   ├── mypackage.egg-info
│   │   ├── PKG-INFO
│   │   ├── PKG-INFO.bak
│   │   ├── PKG-INFO.bak-e
│   │   ├── SOURCES.txt
│   │   ├── dependency_links.txt
│   │   ├── requires.txt
│   │   └── top_level.txt
│   ├── settings.py
│   ├── setup.cfg
│   ├── tests
│   │   └── test_qualys_cache.py
│   ├── util.py
│   └── version.py
└── setup.py

我希望在mypackage.tests中进行测试我在qcache扩展模块上遇到依赖相对导入的问题。该模块依赖于(并且必须依赖于)父模块。我试图通过相对导入引入父模块需求,如下所示:

from .. import api_methods, connect

哪个适用于顶级项目路径,但不适用于模块本身。我是否正确进行pypi标准单元测试?我真的很喜欢写pypi鸡蛋所以任何建议都值得赞赏。

现在我按照以下方式运行我的测试(来自项目,而不是包目录)

python -m unittest mypackage.tests.test_qualys_cache

1 个答案:

答案 0 :(得分:0)

我使用了virtualenv和virtualenvwrapper使用nose2和setuptools。这解决了我跨实例的相对导入问题。