2013-10-05 3 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, прежде чем тесты снова будут работать.

Смежные вопросы