组织cython源文件及其测试(使用nosetests)

时间:2013-10-05 10:05:21

标签: python cython nose

在玩nose并尝试将其与cython结合使用时,我无法完全按照自己喜欢的方式工作。代码组织如下:

.
├── setup.py
└── src
    ├── calc
    │   ├── factorial.py
    │   ├── __init__.py
    │   └── tests.py
    └── cycalc
        ├── tests.py
        └── triangle.pyx

每个tests.py包含2个测试,一个成功,一个失败。运行setup.py nosetests的结果是只运行calc/tests.py。如果我在此运行nosetests3 src/cycalc之后运行了cycalc/tests.py中的两个测试。但是,如果我清理所有构建文件,它会失败,因为cycalc/triangle.pyx尚未构建到共享库中。

然后我尝试添加文件src/cycalc/__init__.py,现在setup.py nosetests选择了cycalc/tests.py,但找不到所需的模块,它被放置在src

如何安排我的cython源代码和测试以使setup.py nosetests找到所需的一切?

1 个答案:

答案 0 :(得分:1)

要让nose自动运行测试,您应该将它们添加到名为tests的文件夹中,其中包含所有测试。像这样:

.
|-setup.py
|-src
|---calc
|------factorial.py
|------__init__.py
|---cycalc
|------triangle.pyx
|------__init__.py
|-tests
|---__init__.py
|---test_calc.py    
|---test_cycalc.py

这样,两个测试都将自动运行,并且所有内容都在同一路径中。如果删除构建的文件,则需要在测试再次运行之前运行python setup.py build