Próbuję wykonać prosty test w Pythonie przy użyciu unittest, aby sprawdzić, czy klasa zgłasza wyjątek, jeśli otrzyma niewłaściwe dane wejściowe dla konstruktora. Klasa wygląda następująco:Testowanie w Pythonie - jak korzystać z assertRaises w testowaniu przy użyciu unittest?
class SummaryFormula:
def __init__(self, summaryFormula):
self.atoms = {}
for atom in re.finditer("([A-Z][a-z]{0,2})(\d*)", summaryFormula):
symbol = atom.group(1)
count = atom.group(2)
if pocet != "":
self.atoms[ symbol] = int(count)
else:
self.atoms[ symbol] = 1
Mój test jest następujący:
class ConstructorTestCase(unittest.TestCase):
def testEmptyString(self):
self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")
if __name__ == '__main__':
unittest.main()
Wszystko czego chcę to test się nie powiedzie, to znaczy, że wyjątek od wejścia nieodpowiednim dla konstruktora nie jest obsługiwane.
Zamiast tego pojawia się błąd: __init__() takes exactly 2 arguments (1 given)
.
Czego mi brakuje? Jaki jest drugi argument, który powinienem podać?
Jakiego rodzaju błędu powinienem użyć do obsługi wyjątku, że dane wejściowe, które nie mogą być dopasowane przez moje wyrażenie regularne, zostały przekazane do konstruktora?
Dziękuję, Tomas
nie mogę uruchomić kod bezpośrednio tam jest błąd składni w pobliżu pętli. Czy potrafisz to skorygować? – pyfunc
Pomyślałem, że wcięcie dla pętli nie było poprawne. – pyfunc
@pyfunc: Przepraszam za to. Poprawiono to. –