Setuptools und unittests

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Setuptools und unittests

Beitragvon helduel » Freitag 9. Januar 2009, 17:26

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
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Beitragvon helduel » Montag 12. Januar 2009, 15:31

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder