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

Mag*_*nus 6 python nose cython

当玩鼻子并尝试将它与cython结合时,我无法完全按照我喜欢的方式工作.代码组织如下:

.
??? setup.py
??? src
    ??? calc
    ?   ??? factorial.py
    ?   ??? __init__.py
    ?   ??? tests.py
    ??? cycalc
        ??? tests.py
        ??? triangle.pyx
Run Code Online (Sandbox Code Playgroud)

每个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找到它需要的一切?

whi*_*ile 1

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

.
|-setup.py
|-src
|---calc
|------factorial.py
|------__init__.py
|---cycalc
|------triangle.pyx
|------__init__.py
|-tests
|---__init__.py
|---test_calc.py    
|---test_cycalc.py
Run Code Online (Sandbox Code Playgroud)

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