Sto provando a fare un semplice test in Python usando unittest, per vedere se una classe genera un'eccezione se ottiene un input non adatto per il costruttore. La classe si presenta così:Test in Python - come usare assertRaises in testing usando 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
La mia prova è la seguente:
class ConstructorTestCase(unittest.TestCase):
def testEmptyString(self):
self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")
if __name__ == '__main__':
unittest.main()
Tutto quello che voglio è il test di fallire, il che significa che l'eccezione dell'ingresso inadatto per il costruttore non è gestita.
Invece, si verifica un errore: __init__() takes exactly 2 arguments (1 given)
.
Cosa mi manca? Qual è il secondo argomento che dovrei specificare?
Inoltre, quale tipo di errore dovrei usare per gestire l'eccezione che un input non accessibile dalla mia regexp è stato passato al costruttore?
Grazie, Tomas
non posso eseguire il codice direttamente in quanto non vi l'errore di sintassi è vicino al ciclo. Puoi correggerlo. – pyfunc
Ho pensato che la rientranza attorno al ciclo non fosse corretta – pyfunc
@pyfunc: mi dispiace. Corretto –