在玩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
找到所需的一切?
答案 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
。