Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
buhtz
- Beiträge: 1105
- Registriert: 04.12.2015 17:54:49
-
Kontaktdaten:
Beitrag
von buhtz » 20.08.2019 10:15:28
Spricht etwas dagegen mehrere
assert*() Aufrufe in einer Testfunktion zu haben?
Beispiel:
Code: Alles auswählen
class MyTest(unittest.TestCase):
# ...
def test_name(self):
p = Person('Doe')
assertTrue(p.name, 'Doe')
p.name = 'Marry'
assertFalse(p.name, 'Doe')
assertTrue(p.name, 'Marry')
Technisch funktioniert es schon. Ist es sauber/pythonic? Ich sehe in den Beispielen so etwas eigentlich nie.
Will aber auch nicht für jeden Kleinkram(!) ne neue Funktion machen müssen.
Zuletzt geändert von
buhtz am 28.08.2019 07:23:41, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von
Back In Time (
backintime)
-
cronoik
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von cronoik » 20.08.2019 18:44:50
Meiner Auffassung nach sollte es grundsaetzlich das Ziel sein, dass ein Unittest aus genau einem Grund fehlschlaegt. Das heisst wenn deine Unitstests laufen und du dir die fehlgeschlagenen Tests anschaust, dann sollte dir klar sein an welcher Stelle die Ursache sein koennte. In deinem Test testest du nur eine Sache (Klassenattribut name) und deshalb finde ich diesen Test in Ordnung. Wuerdest du aber noch andere Attribute testen, dann wuerde ich deinen Unittest als nicht hilfreich ablehnen. An welcher Stelle allerdings die Grenze gezogen wird, haengt immer von der Person ab mit der du sprichst und mit deren Erfahrungen.
Hilf mit unser
Wiki zu verbessern!
-
reox
- Beiträge: 2463
- Registriert: 06.06.2006 22:09:47
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von reox » 22.08.2019 09:05:53
Mh also ich schreibe das immer so. Ich teste halt eine unit in einer funktion, also zB gibts eine funktion add(a, b), dann teste ich halt das gesamte verhalten in einer funktion test_add.
Der Testrunner zeigt ja normalerweise an wo was nicht geklappt hat.
Allerdings gibts da auch Meinungsverschiedenheiten ob assertTrue oder assertEqual verwendet werden sollte...