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

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

最佳答案

要让 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,然后测试才能再次运行。

关于python - 组织 cython 源文件及其测试(使用 nosetests),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196483/

相关文章:

python - Tensorflow:准备输入数据

python - cpython vs cython vs numpy 数组性能

python - 如何使 py.test 或 nose 在所有 python 文件中查找测试?

python - 在 Python 3 中使用字符串格式而不是字符串连接是否更 Pythonic?

python - 在特定深度的字典上添加项目

python - 使用 Cython 重载 Python 数学函数

python - 如何在 mac osx 上安装 python 的 pip 包?

python - Django Nose 这个测试怎么写?

python - Flask/Jinja2 - 包含相对于当前模板的模板

python - 找不到包: *. pxd文件的Cython C级接口(interface)