py.test führt Python2 und Python3 aus

8

Ich habe ein Paket geschrieben ( Ссылка ), das sowohl mit Python2 als auch mit Python3 läuft. Allerdings musste ich separate (py.test) Einheitentests für Python2 und Python3 schreiben (hauptsächlich, weil ich zusätzliche Funktionen von Python3 testen möchte, insbesondere Schlüsselwort-Argumente), also habe ich eine test_py2.py und eine test_py3.py in einem test Unterpaket. Wenn ich jetzt laufe, sage py.test2 mypkg , test_py2 , aber test_py3 scheitert mit SyntaxError . Gleichermaßen, für py.test3 mypkg , test_py3 besteht, aber test_py2 schlägt fehl (ich könnte diese Aufgabe jedoch ausführen, es ist nur ein Problem von StringIO , das nach io verschoben wurde).

Ich kann das test -Subpaket so gestalten, dass import mypkg.test nur die richtige Version der Tests importiert, aber py.test interessiert das anscheinend nicht - es sieht nur zwei Dateien mit test_* und greift alle Tests an Beide ignorieren, was __init__.py ihm sagt, dass er importieren soll.

Also jetzt muss ich sowohl py.test2 mypkg/test/test_py2.py als auch py.test3 mypkg/test/test_py3.py machen. Gibt es eine Möglichkeit, das Ganze so einzurichten, dass py.test2 mypkg und py.test3 mypkg "einfach funktionieren"?

Danke.

    
antony 27.04.2012, 08:19
quelle

2 Antworten

5

Wenn Sie Ihre Module dann auf alle Interpreter importieren und Tests überspringen können, ist dies eine gebräuchliche Lösung. Ansonsten kannst du folgendes als "conftest.py" in das Testverzeichnis schreiben:

%Vor%

Dadurch wird ein projektspezifisches Plug-in ausgewählt und ein Testmodul mit einem Dateinamen, der eine "py2" - oder "py3" -Teilzeichenfolge enthält, in der falschen Interpreterversion ignoriert. Natürlich können Sie es verfeinern, um eine explizite Liste direkt in der Datei conftest.py zu haben, anstatt den Dateinamen etc.pp. Zu überprüfen.

HTH, holger

    
hpk42 23.05.2012, 20:12
quelle
0

Fügen Sie Ihre Tests in verschiedene Pakete ein und führen Sie nur die Tests im entsprechenden Paket aus. Oder laden Sie das entsprechende Testmodul in einem Skript:

%Vor%

oder verwenden Sie eine setup.py-Datei, damit Sie

ausführen können

python setup.py test

und setzen Sie die Versionslogik dort:

%Vor%     
Jasper van den Bosch 29.04.2012 18:04
quelle

Tags und Links