Ich entwickle ein Python-Modul mit mehreren Quelldateien, jede mit einer eigenen Testklasse, abgeleitet von unittest direkt in der Quelle. Betrachten Sie die Verzeichnisstruktur:Python: Wie wird unittest.main() für alle Quelldateien in einem Unterverzeichnis ausgeführt?
dirFoo\
test.py
dirBar\
__init__.py
Foo.py
Bar.py
Um zu testen, entweder Foo.py oder Bar.py möchte ich hinzufügen, das am Ende der Foo.py und Bar.py Quelldateien:
if __name__ == "__main__":
unittest.main()
Und laufe Python auf jeder Quelle, dh
$ python Foo.py
...........
----------------------------------------------------------------------
Ran 11 tests in 2.314s
OK
Idealerweise würde ich „test.py“ automagically dirBar für alle Unittest abgeleiteten Klassen suchen und einen Aufruf von „unittest.main()“ machen. Was ist der beste Weg, dies in der Praxis zu tun?
ich mit Python versucht execfile für jeden anrufen * .py Datei in dirBar, die zum ersten .py Datei einmal ausgeführt wird gefunden & die Berufung test.py verlässt, und dann muss ich meinen Code duplizieren Unittest hinzufügen. main() in jeder Quelldatei - was gegen die DRY-Prinzipien verstößt.
Entweder haben Sie verpasst ‚dirBar/__ init __. Py' oder' von dirBar import * 'wird nicht funktionieren. Btw, verwenden Sie Kleinbuchstaben für Paket/Modulnamen. – jfs
Außerdem besteht das Problem darin, dass Sie davon ausgehen, dass die Testfälle von Foo.py und Bar.py im Modul dirBar __init__.py verfügbar sind. Wenn dies nicht der Fall ist, wird test.py nichts testen. – cdleary
funktioniert nicht so weit, bitte aktualisiere es –