Wo soll ich die tests bei der Verpackung von python-Module?
Ich habe ein Modul, das sitzt in einem namespace. Sollten die tests und Daten die tests verlassen sich auf das gehen in der namespace oder in der obersten Ebene, wo setup.py die Seiten?
./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./company/namespace/test_useful.py
./company/namespace/test_data/useful_data.xml
./setup.py
oder
./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./test_useful.py
./test_data/useful_data.xml
./setup.py
Nicht die Frage, die Menge an tests, ob installiert werden soll oder nicht?
- mögliche Duplikate von Wo sind die Python-unit-tests gehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann sollten Sie Ihre test-Modul in der Modul-tests nach der Per Anhalter durch die Verpackung.
Hier ist Ihr Beispiel:
Diese Weise Ihre module verbreitet werden, mit Ihren tests, und die Benutzer können Sie verwenden, um zu überprüfen, dass es funktioniert mit Ihrer Einrichtung.
Sehen http://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/creation.html.
Den Beispiel-Projekt speichert die tests außerhalb des Moduls.
Die Verzeichnis-Struktur sieht wie folgt aus:
Verwandte: Die Verpackung Anleitung: https://packaging.python.org/en/latest/
Hinweis: Folgen Sie nicht den "The Hitchhiker' s Guide to Packaging". Es hat nicht gewesen aktualisiert seit 2010!
(nicht zu verwechseln beide Seiten. Die "The Hitchhiker' s Guide to Python" ist ein sehr solides Buch)
package-data
auf meine tests Verzeichnissetup.py
... pip noch installiertmyModule
, dann installierttests
als separates Paket. Ich habe meinetests
- Verzeichnis einfach im Umlauf inLib/site-packages
mit keine Möglichkeit zu sagen, es gehört zu meinem Modul. Wie verhindern Sie diese situation?Ich persönlich erstellen Sie eine einzelne
tests
Paket als ein sub-Paket an das main-Paket für ein paar Gründe:Wenn
tests
ist parallel mit dem root-Paket gibt es eine off-chance, dass Sie oder ein Benutzer kann misconfiguresetup.py
und versehentlich legen Sie eine Globale Paket namenstests
die zu einer grossen Verwirrung und Kopfschmerzen, bis Sie realisieren, was passiert ist. Indem Sie in der main-Modul löst dieses Problem, da es jetzt unter einen (hoffentlich) weltweit eindeutigen Namensraum.Ich weiß nicht, wie putting ein test-Modul innerhalb von Benutzer-Paket, weil die test-Läufer zu suchen haben, durch die Produktion von code. Dies ist wahrscheinlich nicht ein problem für die meisten. Aber, wenn Sie geschehen, ein hardware-test-Ingenieur, die Sie wahrscheinlich mit dem Wort "test" eine Menge in Ihrer Produktions-code und nicht wollen, dass die Einheit test-runner zu Holen, das Zeug. Es ist viel einfacher, wenn alle tests sind in einem Ort getrennt von den Produktions-code.
Kann ich weiter untergliedern mein Ordner "tests" in die Arten von tests, wie
unit
,functional
undintegration
. Meine funktionalen tests neigen dazu, Abhängigkeiten auf seltsame proprietäre hardware, Daten oder sind langsam. So ist es einfach für mich, um kontinuierlich laufen nur die schnelle unit-test-Ordner, wie ich entwickeln.Kann es manchmal zweckmäßig sein, haben die tests werden innerhalb der gleichen Paket-Hierarchie als das, was es ist testen.
Insgesamt, obwohl, ich denke, es ist wichtig, für sich selbst zu denken über das, was am besten für Ihre speziellen problem-Domäne nach der Einnahme jeder Beratung berücksichtigt. 'Best practices' sind ideal Ausgangspunkt, nicht Endpunkt, für die Entwicklung eines Verfahrens.