pyunit tests in seperatem package
Verfasst: Samstag 29. Januar 2011, 17:05
Hi,
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:
Damit in submoduletest1.py Module aus übergeordneten Paketen importiert werden können mache ich folgendes:
1.submoduletest1:
2.mycoremodule:
Damit lassen sich die Tests nun erfolgreich aufrufen, wenn man in das Verzeichnis navigiert, in dem das Package core liegt und
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
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 SubModuleClassCode: Alles auswählen
from core.submodule1 import SubModuleClassaufruft.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