Namenskonvention für Python-Unit-Tests für Modulfunktionen

8

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?

    
siebz0r 24.09.2013, 08:03
quelle

1 Antwort

3

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.

    
robjohncox 04.01.2015 20:42
quelle