Beim Schreiben von Tests benenne ich normalerweise die Module mit dem Präfix test_
, zum Beispiel spam.py
und test_spam.py
. Dies erleichtert das Auffinden der Tests. Beim Testen von Klassen in einem Modul erstelle ich ein unittest.TestCase
-Derivat mit einem ähnlichen Klassennamen, der mit Test
nachfixiert wurde. z.B. Spam
wird SpamTest
(nicht TestSpam
, da es sich anhört als wäre es eine Testimplementierung von Spam
). Dann werden Klassenfunktionen durch Testfunktionen getestet, denen test_
vorangestellt ist und die mit _testcondition
oder einem anderen beschreibenden Postfix postfixiert wurden. Ich finde, dass dies hervorragend funktioniert, da die ursprünglichen Objektnamen enthalten sind.
Das Problem tritt auf, wenn ich Funktionen auf Modulebene testen möchte. Nach meiner regulären Struktur würde ich ein unittest.TestCase
Derivat mit dem gleichen Namen wie die Funktion, postfixed mit Test
, erstellen. Das Problem dabei ist, dass Klassennamen mit Kamelen versehen sind und Funktionsnamen mit Unterstrichen versehen sind, um Wörter zu trennen. Wenn Sie die Namenskonvention some_function
ignorieren, wird SomeFunctionTest
. Ich kann nicht anders, als zu fühlen, dass das hässlich ist.
Was passt besser? Was ist gängige Praxis? Gibt es dafür einen "Standard" wie Pep8? Was benutzt du?
Die Art und Weise, wie Sie es tun, ist der sauberste Ansatz - solange es einen klaren Ort gibt, an dem die Leute erwarten würden, die Tests für eine Funktion auf Modulebene zu finden, dann denke ich, dass Sie gut sind. Der stilistische Unterschied zwischen dem Funktionsnamen und dem Namen der Testklasse ist - obwohl ein Ärgernis - nicht signifikant genug, um sich Sorgen zu machen.
Tags und Links python unit-testing naming-conventions