ich bin gerade dabei meinen Code mit Unittest auszugestalten und habe angefangen auch konkrete Exceptions einzubauen. Dabei habe ich das Problem das meine Exception vom Unittest nicht erkannt wird. Folgender Aufbau liegt vor. Ich habe "unnötige" Stellen einfach mit Sternen versehen, da es nur um die Stuktur geht.
"Oberklasse" welche ich testen will und welche die oberste Schicht bildet:
Modul 1:
Code: Alles auswählen
def vlwKurseUmrechnen(self, zielWaehrung:str = None):
try:
if *****:
self._vlwKurse.waehrungUmrechnen(*)
except Exception as Ex:
raise Ex
Modul 2:
Code: Alles auswählen
def waehrungUmrechnen(*****:):
try:
if (zielWaehrung != self._kursWaehrung):
letztesWechselkursDatum = *****
kleinstesWechselkursDatum = *****
letztesDatumInBasisTabelle = *****
erstesDatumInBasisTabelle = *****
Eingabepruefung().pruefeWertGroesserGleich(pruefGroesse = erstesDatumInBasisTabelle, pruefBezeichnung = "Kleinstes Datum der Kurstabelle", grenzwert = kleinstesWechselkursDatum)
Eingabepruefung().pruefeWertGroesserGleich(pruefGroesse = letztesWechselkursDatum, pruefBezeichnung = "Groesstes Datum der Wechselkurstabelle", grenzwert = kleinstesWechselkursDatum)
relevantenWechselkurse = *****
zwischenErgebnisTabelle = *****
self._kursVerlauf = zwischenErgebnisTabelle
self._kursWaehrung = zielWaehrung
self._wechselkursDaten= None
else:
return self
except Exception as ex:
raise ex
Modul 3:
Code: Alles auswählen
def pruefeWertGroesserGleich(self, pruefGroesse, pruefBezeichnung, grenzwert):
if (pruefGroesse >= grenzwert) == False:
raise fehlermeldungen.fehlerPruefwertZuKlein(f"Der Wert {pruefBezeichnung} muss größer oder gleich {grenzwert} sein. ({pruefBezeichnung} = {pruefGroesse})")
else:
return self
Code: Alles auswählen
conda activate base
raise Ex
File "c:/Users/alexa/Desktop/myProjects/fondsmanager/modAnlageklassen.py", line 177, in vlwKurseUmrechnen
self._vlwKurse.waehrungUmrechnen(zielWaehrung= zielWaehrung, wechselkursDaten=self._wechselkursDaten)
File "c:\Users\alexa\Desktop\myProjects\fondsmanager\modTypes.py", line 55, in waehrungUmrechnen
raise ex
File "c:\Users\alexa\Desktop\myProjects\fondsmanager\modTypes.py", line 40, in waehrungUmrechnen
Eingabepruefung().pruefeWertGroesserGleich(pruefGroesse = erstesDatumInBasisTabelle, pruefBezeichnung = "Kleinstes Datum der Kurstabelle", grenzwert = kleinstesWechselkursDatum)
File "c:\Users\alexa\Desktop\myProjects\fondsmanager\modPlausibilisierungen.py", line 10, in pruefeWertGroesserGleich
raise fehlermeldungen.fehlerPruefwertZuKlein(f"Der Wert {pruefBezeichnung} muss größer oder gleich {grenzwert} sein. ({pruefBezeichnung} = {pruefGroesse})")
modExceptions.fehlerPruefwertZuKlein: Der Wert Kleinstes Datum der Kurstabelle muss größer oder gleich 20000102 sein. (Kleinstes Datum der Kurstabelle = 20000101)
Wie verbaue ich das ganze dann im Unittest, damit er diesen Fehler korrekt findet?
Code: Alles auswählen
def test_vlwKurseUmrechnen_fehlende_Wechselkurse(self):
verFabrik = vermoegenswertFactory()
testObjekt = verFabrik.generateVermoegenswert(4)
self.assertRaises(fehlerPruefwertZuKlein,testObjekt.vlwKurseUmrechnen, "EUR")
Danke sehr, ich weiß nicht mehr weiter.
Danke!
TogetherAlone