Da einige Funktionen mit neuen Versionen von Django veraltet sind, gibt es eine Möglichkeit, dies auf einem vorhandenen Projektcode zu überprüfen, z. B. auf github.
Könnte ein Tool das machen? Gibt es eine Möglichkeit, dies durch Testfälle zu erkennen?
Wäre es möglich, dasselbe gegen eine Python-Version zu tun?
Ich denke, ein Weg könnte sein, eine bestimmte Version von django / python mit tox zu durchlaufen und dann nach Fehlern zu suchen.
Ich suche nur etwas eleganteres oder direkteres, etwas wie das sagt - "Beachten Sie, dass diese Funktion veraltet ist" , etwas, das in stark typisiertem Text ausgeführt werden kann Sprache wie Java.
Wenn man ein solches Werkzeug bauen wollte, könnte das, wenn möglich, der Ausgangspunkt dafür sein.
So habe ich ein Projekt von mir gegen Django 1.6, 1.7 und 1.8 mit Deprecation-Warnungen gestartet:
%Vor% Das Argument -Wmodule
bewirkt, dass Python jede Verwarnungswarnung beim ersten Auftreten in einem Modul ausgibt, was für mich gut genug war. Ich war in der Lage, mit Instanzen umzugehen, in denen ich from django.core.cache import get_cache
verwendet habe, was in Django 1.9 verschwunden sein wird.
In Fällen, in denen -Wmodule
zu viel ausgibt, möchten Sie möglicherweise selektiver sein. In der Python-Dokumentation finden Sie Informationen zur Verwendung dieses Arguments . Ich habe absichtlich nicht -Werror
verwendet, weil dies nicht nur dazu führen würde, dass die einzelnen Tests fehlschlagen, sondern dass meine Testsuite den Test any nicht ausführen kann, da die Suite veraltete Features verwendet .
Ich denke, das müsste in den Komponententests für Ihr Projekt sein.
Wenn Ihre Tests Code ausführen, der in einer zukünftigen Version von Django veraltet sein wird, erhalten Sie Warnungen . Wenn Sie zu einer Version von Django gesprungen sind, bei der das Feature bereits veraltet ist, erhalten Sie natürlich Ausnahmen und fehlgeschlagene Tests.
Sie können dem Python-Interpreter mitteilen , Warnungen an Ausnahmen zu übermitteln, die dazu führen würden Tests fehlgeschlagen.
Anweisungen hier , um den gleichen Trick auf das beliebte nosetests Testrahmen.
Wenn Sie bereits wissen (aus Django-Dokumenten), dass sich der Code, den Sie schreiben, ändern muss, abhängig von der Django-Version (z. B. wenn Sie eine wiederverwendbare Django-App verteilen), würde ich eine Form von Feature-Erkennung mit try ... except
Hier wollte ich zum Beispiel das neue% co_de bedingt verwenden % Feature von Django & gt; = 1.6:.
Wie Sie erwartet haben, führe ich dann die Tests gegen verschiedene Versionen von Django mit der Hilfe durch von Tox .
Tags und Links python django deprecation-warning