5

我有一个混合 Python/C++ 库,其中测试文件混合在同一目录中的源文件中。布局看起来像

/home/irving/geode
  geode
    __init__.py
    vector
      __init__.py
      test_vector.py
      ...
    ...

不幸的是,该库无法就地使用,因为它缺少 .so 扩展模块。 问题:我可以让 py.test 始终使用已安装的版本,即使是从/home/irving/geode子目录或子目录运行?

测试文件有from __future__ import absolute_import, 如果直接作为脚本执行,则运行良好。例如,如果我这样做

cd geode/vector
./test_vector.py

确实如此import geode,它会找到已安装的版本。但是,如果我在 中运行 py.test geode/vector,它会找到 的本地副本geode,然后死掉。

4

1 回答 1

9

我认为你有两个选择:

  1. 运行py.test --pyargs geode.vector.test_vector以使 pytest 将参数解释为导入路径,从中派生文件系统路径。这应该针对已安装的版本运行测试。

  2. 将测试移到tests没有__init__.py文件的目录中。这样,您需要pip install -e .就地工作或可以针对已安装的版本运行测试python setup.py installpy.test tests

于 2013-11-18T20:18:50.403 回答