Seite 1 von 1

Setuptools und unittests

Verfasst: Freitag 9. Januar 2009, 17:26
von helduel
Moin,

ich steh irgendwie auf dem Schlauch. Ich habe folgende Verzeichnisstruktur:

Code: Alles auswählen

root
 |- setup.py
 |- src
 |   |- Foo
 |       |- __init__.py
 |       |- MyModule.py
 |- tests
     |- __init__.py
     |- foo.py
Inhalt von setup.py:

Code: Alles auswählen

from setuptools import setup

setup(
    name="Test",
    packages=['Foo'],
    package_dir={'Foo': 'src/Foo'},
    test_suite='tests.foo.get_suite',
)
Inhalt von MyModule.py:

Code: Alles auswählen

def hello():
    return "Hello World"
Inhalt von foo.py:

Code: Alles auswählen

import unittest

from Foo import MyModule

class MyModuleTestCase(unittest.TestCase):
    def test_hello(self):
        self.assertEqual(MyModule.hello(), "Hello World")


def get_suite():
    return unittest.defaultTestLoader.loadTestsFromTestCase(MyModuleTestCase)


if __name__ == '__main__':
    unittest.main()
Inhalt von tests/__init__.py:

Code: Alles auswählen

import foo
Rufe ich jetzt aber "setup.py test" auf, erhalte ich folgenden Fehler:

Code: Alles auswählen

ImportError: No module named Foo
In foo.py importiere ich mein Modul Foo. In der Doku von setuptools steht, dass setuptools dafür sorgt, dass meine Module sichtbar sind. Aber das geht offensichtlich nicht (so, wie ich das denke). Weiß einer von euch, was ich falsch mache?

Gruß,
Manuel

Verfasst: Montag 12. Januar 2009, 15:31
von helduel
Hab mir jetzt mal so weiter geholfen:

Inhalt von setup.py

Code: Alles auswählen

import sys
from os.path import abspath

from setuptools import setup

sys.path.insert(1, abspath("src"))

setup(
    name="Test",
    packages=['Foo'],
    package_dir={'Foo': 'src/Foo'},
    test_suite='tests.foo.get_suite',
)
Nicht unbedingt schön, aber momentan besser als nix :-).

Vielleicht ist das ein Bug. Ich werde bei Gelegenheit mal meine Ubuntu-Version von setuptools mit der originalen vergleichen und einen entsprechenden Bug-Report schreiben.