Структура пакета Python, setup.py для запуска модульных тестов

Я не уверен, что правильно упорядочиваю структуру пакета или использую правильные параметры в setup.py, потому что я получаю ошибки при попытке запуска модульных тестов.

У меня есть такая структура:

/project /bin /src /pkgname __init__.py module1.py module2.py /tests __init__.py test1.py test2.py 

Моя setup.py выглядит так:

 #!/usr/bin/env python from setuptools import setup, find_packages setup(version='0.1', description='Trend following library', author='Nate Reed', author_email='nate@natereed.com', packages=find_packages(), install_requires=['numpy'], test_suite="tests", ) 

Когда я запускаю «тест python setup.py», я получаю:

 nate@nate-desktop:~/PycharmProjects/trendfollowing$ sudo python setup.py test running test running egg_info writing requirements to UNKNOWN.egg-info/requires.txt writing UNKNOWN.egg-info/PKG-INFO writing top-level names to UNKNOWN.egg-info/top_level.txt writing dependency_links to UNKNOWN.egg-info/dependency_links.txt reading manifest file 'UNKNOWN.egg-info/SOURCES.txt' writing manifest file 'UNKNOWN.egg-info/SOURCES.txt' running build_ext Traceback (most recent call last): File "setup.py", line 11, in <module> test_suite="tests", File "/usr/lib/python2.6/distutils/core.py", line 152, in setup dist.run_commands() File "/usr/lib/python2.6/distutils/dist.py", line 975, in run_commands self.run_command(cmd) File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command cmd_obj.run() File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 137, in run self.with_project_on_sys_path(self.run_tests) File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 117, in with_project_on_sys_path func() File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 146, in run_tests testLoader = loader_class() File "/usr/lib/python2.6/unittest.py", line 816, in __init__ self.parseArgs(argv) File "/usr/lib/python2.6/unittest.py", line 843, in parseArgs self.createTests() File "/usr/lib/python2.6/unittest.py", line 849, in createTests self.module) File "/usr/lib/python2.6/unittest.py", line 613, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "/usr/lib/python2.6/unittest.py", line 587, in loadTestsFromName return self.loadTestsFromModule(obj) File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 34, in loadTestsFromModule tests.append(self.loadTestsFromName(submodule)) File "/usr/lib/python2.6/unittest.py", line 584, in loadTestsFromName parent, obj = obj, getattr(obj, part) AttributeError: 'module' object has no attribute 'test1' 

Нужно ли именам тестов соответствовать именам модулей? Существуют ли другие соглашения, которые я должен соблюдать в своей структуре пакета?

Посредством некоторых проб и ошибок я нашел причину этой проблемы. Имена тестов должны соответствовать именам модулей. Если есть тест «foo_test.py», должен быть соответствующий модуль foo.py.

Я нашел некоторые рекомендации по организации структуры пакетов , которые помогли мне реорганизовать мой пакет в структуру, в которой я был уверен.