我有一个混合的Python/C++库,测试文件混合在同一目录的源文件中.布局看起来像
/home/irving/geode
geode
__init__.py
vector
__init__.py
test_vector.py
...
...
Run Code Online (Sandbox Code Playgroud)
遗憾的是,由于缺少.so扩展模块,因此库无法就地使用. 问题:我是否可以使py.test始终使用已安装的版本,即使从/home/irving/geode或从子目录运行?
测试文件具有from __future__ import absolute_import,并且如果直接作为脚本执行则运行正常.例如,如果我这样做
cd geode/vector
./test_vector.py
Run Code Online (Sandbox Code Playgroud)
它确实import geode找到了已安装的版本.但是,如果我运行py.test geode/vector,它会找到本地副本geode,然后死掉.
我想你有两个选择:
运行py.test --pyargs geode.vector.test_vector以使pytest将参数解释为导入路径,从中导出文件系统路径.这应该针对已安装的版本运行测试.
将测试移到tests没有__init__.py文件的目录中.这样,您需要pip install -e .就地工作或可以执行python setup.py install以及py.test tests针对已安装的版本运行测试.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |