Verwenden Sie wenn __name__ == '__main__': für Tests

8

Wenn Sie einige Skripte schreiben, die autark sind, ist es eine schlechte Idee, das if __name__ == '__main__' als Ort zum Schreiben von Tests zu verwenden?

    
Paul Manta 04.09.2011, 06:22
quelle

4 Antworten

4

Testlogik und Tests sollten nie Teil der "Produktion" (Produktion kann von Ihnen verwendet werden, für den Kunden freigegeben werden, usw.) sein. Es ist also eine schlechte Idee, sie irgendwo in Ihrem Skript zu haben.

Idealerweise haben Sie sie in separaten Dateien.

    
manojlds 04.09.2011, 06:26
quelle
5

Es hängt wirklich von Ihrem Code und den Zwecken Ihres Skripts ab. Bei großen und komplexen Projekten müssen Sie sicher alle Ihre Tests an einem separaten Ort ablegen.

Aber während wir an etwas Kleinem arbeiten, könnte es eine gute Lösung sein, Tests zusammen mit Code zu haben - das ist die Grundidee von doctest (es ist ein großartiges Python-Modul, mit dem Sie Tests in die Docstrings schreiben können). In diesem Fall sieht Ihr if __name__ == '__main__' folgendermaßen aus:

%Vor%

Ich finde es schön und sauber.

    
Roman Bodnarchuk 04.09.2011 07:21
quelle
3

Es empfiehlt sich, die Tests in separate Einheiten zu unterteilen, die das Unittest-Modul verwenden. Diese Trennung ermöglicht es Ihnen, den Hauptcode sauber zu halten (keine Notwendigkeit für viele Testhilfsfunktionen) und ermutigt Sie, gute umfassende Tests zu schreiben, da Sie nicht daran gehindert werden, den Hauptcode zu überlisten.

    
David Heffernan 04.09.2011 06:37
quelle
0

Ich glaube nicht, dass ich viele Python-Skripte (meistens Plugins einer anderen Anwendung) auf diese Weise geschrieben habe.

    
LeleDumbo 04.09.2011 06:25
quelle

Tags und Links