2013-10-05 34 views
6

當玩nose並試圖將它與cython結合時,我不能完全按照自己喜歡的方式工作。該代碼被組織這樣的:組織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

對於nose自動運行您的測試,您應該將它們添加到名爲包含所有測試的測試文件夾。像這樣:

. 
|-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