Ich verwende Python 2.6.5 und habe folgende Package Struktur:
core/mycoremodule.py
core/submodule1/submodule1.py
core/submodule2
core/tests/main.py
core/tests/submoduletest1.py
core/tests/submoduletest2.py
Im Paket tests werden alle tests über main.py als eine Testsuite gestartet:
Code: Alles auswählen
import unittest
import submoduletest1
import submoduletest2
suite1 = submoduletest1.suite()
suite2 = submoduletest2.suite()
alltests = unittest.TestSuite((suite1, suite2))
runner = unittest.TextTestRunner()
runner.run(alltests)
1.submoduletest1:
Code: Alles auswählen
from core.mycoremodule import CoreModuleClass
from core.submodule1 import SubModuleClass
Code: Alles auswählen
from core.submodule1 import SubModuleClass
aufruft.python -c "import core.tests.main"
Will ich nun die mycoremodule.py als eigenständiges Programm ausführen, bekomme dabei aber die Fehlermeldung:
ImportError: No module named core.submodule1.SubModuleClass
Um diesen Fehler zu vermeinden kann ich das "core."-Prefix bei den Imports weglassen, aber dann funktionieren die Tests nicht mehr.
Ich habe es schon mit der unittest.main() versucht und damit core/tests/main.py direkt aufzurufen.
Aber Egal was ich probiert habe, konnte ich nur entwerder die Tests oder mein core Modul laufen lassen ohne etwas an den Paketnamen zu ändern.
Ich habe bisher kein Beispiel gefunden, in dem die Pakete ebenso organisiert waren, also wende ich mich nun an euch. Bitte helft mir meine Paket Imports so zu organisieren, dass ich sowohl die Testsuite als auch mein CoreModul laufen lassen kann. Die Tests sollen wie gesagt in dem jetzigen Paket bleiben.
MfG,
Boa